Contentful CLI
Contentful's command line interface tool. Use Contentful features straight from your CLI.
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.
:rocket: 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.
:cloud: Installation
Make sure you have Node LTS installed
Then using npm or yarn:
npm install -g contentful-cli
yarn global add contentful-cli
Please note that for the non standalone versions you need Node LTS to use the CLI.
:hand: 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
contentful space --help
:books: 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:
http_proxy
takes precedence over .contentfulrc.json
https_proxy
takes precedence over .contentfulrc.json
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.
:rescue_worker_helmet: Troubleshooting
- Unable to connect to Contentful through your Proxy? Try settings
rawProxy: true
in your .contentfulrc.json
via:
contentful config add --raw-proxy
:hammer_and_wrench: Development
- Install dependencies
npm i
- 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"
}
- Link your local version, and happy hacking :tada:
npm link
:robot: Testing
Integration tests
To run integration tests locally, you'll need the following:
- 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>'
- Run talkback proxy to record and playback http requests
npm run talkback-proxy
- In another terminal shell run your preferred tests
npm run test:jest
npx jest test/integration/cmds/space/* --watch
Unit tests
Simply run:
npm run test:unit:watch
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
:question: 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.
:writing_hand: Contributing
See CONTRIBUTING.md
:scroll: License
MIT