/contentful-export

this tool allows you to export a space to a JSON dump

Primary LanguageJavaScriptMIT LicenseMIT

Contentful export tool

npm Build Status Coverage Status Dependency Status devDependency Status

semantic-release js-standard-style

https://www.contentful.com is a content management platform for web applications, mobile apps and connected devices. It allows you to create, edit & manage content in the cloud and publish it anywhere via powerful API. Contentful offers tools for managing editorial teams and enabling cooperation between organizations.

This is a command line tool (CLI) that help you backup your published Content Model, Content and Assets or move them to a new Contentful space. It will support Editor Interfaces, Webhooks and Roles & Permissions in a future version.

To import your exported data, please refer to the contentful-import repository.

Installation

We recommend the installation of this CLI via npm:

npm install -g contentful-export

Usage and examples

Usage: contentful-export [options]

Options:
  --version             Show version number                            [boolean]

  --space-id            ID of Space with source data         [string] [required]

  --management-token    Contentful management API token for the space to be
                        exported                             [string] [required]

  --export-dir          Defines the path for storing the export json file
                        (default path is the current directory)         [string]

  --include-drafts      Include drafts in the exported entries
                                                      [boolean] [default: false]

  --skip-content-model  Skip exporting content models [boolean] [default: false]

  --skip-content        Skip exporting assets and entries
                                                      [boolean] [default: false]

  --skip-roles          Skip exporting roles and permissions
                                                      [boolean] [default: false]

  --skip-webhooks       Skip exporting webhooks       [boolean] [default: false]

  --download-assets     With this flags assets will also be downloaded [boolean]

  --max-allowed-limit   How many items per page per request
                                                        [number] [default: 1000]

  --error-log-file      Full path to the error log file                 [string]

  --save-file           Save the export as a json file [boolean] [default: true]

  --config              An optional configuration JSON file containing all the
                        options for a single run

The --management-token parameter allows you to specify a token used for both spaces. If you request a token from here and your user account has access to both spaces, this should be enough.

Check the example-config.json file for an example of what a configuration file looks like. If you use the configuration file, you don't need to specify the other options for tokens and space ids.

Example

contentful-export \
  --space-id spaceID \
  --management-token managementToken

or

contentful-export --config example-config.json

You can create your own configuration file based on the example-config.json file.

Exported data

This is an overview of the exported data:

{
  "contentTypes": [],
  "entries": [],
  "assets": [],
  "locales": [],
  "webhooks": [],
  "roles": [],
  "editorInterfaces": []
}

Usage as a library

While this tool is intended for use as a command line tool, you can also use it as a Node library:

var spaceExport = require('contentful-export')
var options = {
  spaceId: '{space_id}',
  managementToken: '{content_management_api_key}',
  maxAllowedItems: 100,
  errorLogFile: 'filename',
  saveFile: false
  ...
}
spaceExport(options)
.then((output) => {
  console.log('Your space data:', output)
})
.catch((err) => {
  console.log('Oh no! Some errors occurred!', err)
})

The options object can contain any of the CLI options, but written with a camelCase pattern instead and no dashes. For example --space-id would become spaceId.

Limitations

  • This tool currently does not support the export of space memberships.
  • Exported webhooks with credentials will be exported as normal webhooks. Credentials should be added manually afterwards.
  • If you have custom UI extensions, you need to reinstall them manually in the new space.

Changelog

Read the releases page for more information.

License

This project is licensed under MIT license