Skip to content

contentful/contentful-cli

Repository files navigation

Contentful CLI

Contentful's command line interface tool. Use Contentful features straight from your CLI.

npm Contentful

Contentful provides a content infrastructure for digital teams to power content in websites, apps, and devices. Unlike a CMS, Contentful was built to integrate with the modern software stack. It offers a central hub for structured content, powerful management and delivery APIs, and a customizable web app that enable developers and content creators to ship digital products faster.

πŸš€ Features

  • Get started with Contentful with the init command.
  • Manage spaces - list, create, delete,...
  • Export your space to a JSON file.
  • Import your space from a JSON file.
  • Execute migration scripts written in the Contentful Migration DSL
  • Generate migration scripts for the Contentful Migration DSL from existing spaces.
  • Seed your space with example data.
  • Manage installation of extensions in a space.
  • Securely login and logout with our OAuth service.
  • Find all available commands in the docs section.

☁️ Installation

Make sure you have Node LTS installed

Then using npm or yarn:

npm install -g contentful-cli
# Or
yarn global add contentful-cli

Please note that for the non standalone versions you need Node LTS to use the CLI.

βœ‹ Usage

Use the --help parameter to display the help section for CLI tool or combined with a specific command to get the help section for that command.

contentful --help
# Or
contentful space --help

πŸ“š Documentation

More detailed documentation for every command can be found in the docs section.

Using the CLI tool with a proxy

You can save the proxy configuration in your .contentfulrc.json via:

contentful config add --proxy user:auth@host:port

We also respect the http(s)_proxy environment variables:

https_proxy=user:auth@host:port contentful

When multiple proxy configurations exists, precedence is taken in this form:

  1. http_proxy takes precedence over .contentfulrc.json
  2. https_proxy takes precedence over .contentfulrc.json
  3. https_proxy takes precedence over http_proxy

Configuring the CLI for EU usage

You can override the host configuration in your .contentfulrc.json via:

contentful config add --host api.eu.contentful.com

Then any subsequent command will use the EU host. E.g. contentful login will log you in to your EU Contentful instance.

⛑️ Troubleshooting

  • Unable to connect to Contentful through your Proxy? Try settings rawProxy: true in your .contentfulrc.json via:
contentful config add --raw-proxy

πŸ› οΈ Development

  1. Install dependencies
    npm i
  2. To avoid development version colliding with your already installed Contentful CLI, change the command name in package.json
      "bin": {
    -     "contentful": "bin/contentful.js"
    +     "ctfl": "bin/contentful.js"
      }
  3. Link your local version, and happy hacking πŸŽ‰
    npm link

πŸ€– Testing

Integration tests

To run integration tests locally, you'll need the following:

  1. Set environment variables in .jest/env.js (can be found in 1Password)
    process.env.CONTENTFUL_INTEGRATION_TEST_CMA_TOKEN = '<cma_auth_token>'
    process.env.CLI_E2E_ORG_ID = '<organization_id>'
  2. Run talkback proxy to record and playback http requests
    npm run talkback-proxy
  3. In another terminal shell run your preferred tests
    ## Run all integration tests
    npm run test:jest
    ## Or run specific tests
    npx jest test/integration/cmds/space/* --watch

Unit tests

Simply run:

# Run all unit tests
npm run test:unit:watch
# Or run specific tests
npx jest test/unit/cmds/* --watch

See jest documentation for more details about running tests and optional flags.

Updating Snapshots

You might need to update snapshots and it's challenging with the recordings.

Tip: run tests without recordings to update the snapshots.

npx jest test/integration/cmds/<path to the affected test file> --updateSnapshot

❓ Support

If you have a problem with this tool, please file an issue here on Github.

If you have other problems with Contentful not related to this library, you can contact Customer Support.

✍️ Contributing

See CONTRIBUTING.md

πŸ“œ License

MIT