Contentful Migrator Programme
Tool to manage Contentful migrations
Setup
Install package
npm i --save @prototyp-stockholm/contentful-migrator-programme
Prepare a Contentful space
Get an API Key for migrations (CTF_CMA_TOKEN
) under Settings -> API Keys -> Content management
tokens in your Contentful space.
Create an environment under Settings -> Environments
.
Create a configuration file
Create a .env
file in your project root and add these variables:
Required variables
CTF_SPACE_ID=<SECRET> # The Contentful space id
CTF_ENVIRONMENT_ID=<SECRET> # The name of the Contentful environment
CTF_CMA_TOKEN=<SECRET> # The Content Management API token
Optional variables
MIGRATIONS_DIR=migrations # A relative path to the directory where CMP will store migration script files
APPLIED_MIGRATIONS_TYPE_ID=appliedMigrations # The content type id used to store applied migration entries
MAX_NUMBER_OF_ALIASES=1 # The number of allowed aliases in this Contentful space
MAX_NUMBER_OF_ENVIRONMENTS=4 # The number of allowed aliases in this Contentful space
Usage
An example migration with up
and down
functions:
module.exports.up = (migration, context) => {
const dog = migration.createContentType('dog').name('Dog').displayField('name')
dog.createField('name').type('Symbol').name('Name')
}
module.exports.down = (migration, context) => {
migration.deleteContentType('dog')
}
If you did not install the package globally you'll have to prepend node_modules/.bin/
to the cmp
command.
Otherwise, you can add the cmp
command in the scripts section of the project package.json
.
Then you can use it like so: npm run cmp
.
{
"scripts": {
"cmp": "cmp"
}
}
Read more on migration syntax on https://github.com/contentful/contentful-migration
Available commands
cmp generate <migrationName>
Generates a migration with the given name and a timestamp prepended ex: YYYYMMDDhhmmssxxx-add-user-type.js.
cmp migrate
Applies all up operations of the non applied migrations to the CTF_ENVIRONMENT_ID set in the .env
file
cmp rollback
Applies the down operations (i.e rolls back ) of the latest migration batch
cmp aux:create <name?>
Creates an aux environment based on CTF_ENVIRONMENT_ID. You can give it an optional name.
cmp aux:drop <name>
Drop the environment with the given name
cmp aux:test
Creates environment from CTF_ENVIRONMENT_ID, applies new migrations, and drops the environment
For development of the CMP tool
- Clone this project
npm i
npm link
- Create a test project in another folder and cd into it
npm init
npm i @prototyp-stockholm/contentful-migrator-programme
npm link @prototyp-stockholm/contentful-migrator-programme
- create an .env file and set the required CTF credentials
Now anything you modify in the locally cloned package will be instantly available in the test project to test.
Roadmap