/codemods

A set of scripts to help migrate Strapi plugins (and in some cases Strapi applications) from v3 to v4

Primary LanguageJavaScript

@strapi/codemods

@strapi/codemods

CLI to help you migrate your Strapi applications & plugins from v3 to v4.

Features

  • Migrate a Strapi application to v4
  • Migrate a Strapi plugin to v4
  • Migrate a Strapi application or a plugin's dependecies to v4

Getting started

🖐 Requirements

Before running any commands, be sure you have initialized a git repository, the working tree is clean, you've pushed your code to GitHub, and you are on a new branch.

🕹 Usage

Migrate

Usage with prompt

npx @strapi/codemods migrate

The prompt will ask you:

  • What do you want to migrate?
    • Application (migrate folder structure + dependencies)
    • Plugin (migrate folder structure + dependencies)
    • Dependencies (on migrate dependencies)
  • Where is the project located? (default: ./).
  • (plugin only) Where do you want to create the v4 plugin

Bypass the prompt

To bypass the prompts use one of the following commands:

  • Application migration
npx @strapi/codemods migrate:application <path>
  • Plugin migration
npx @strapi/codemods migrate:plugin <path> [pathForV4Plugin]

Note: if no pathForV4Plugin is provided it will be created at <path>-v4

  • Dependencies migration
npx @strapi/codemods migrate:dependencies <path>

Transform

⚠️ This command will modify your source code. Be sure you have initialized a git repository, the working tree is clean, you've pushed your code to GitHub, and you are on a new branch.

npx @strapi/codemods transform

The prompt will ask two questions:

  • What kind of transformation you want to perform:

    • find -> findMany: Change find method to findMany

    • strapi-some-package -> @strapi/some-package: Update strapi scoped imports

    • .models -> .contentTypes: Change model getters to content types

    • strapi.plugins['some-plugin'] -> strapi.plugin('some-plugin'): Update top level plugin getters

    • strapi.plugin('some-plugin').controllers['some-controller'] -> strapi.plugin('some-plugin').controller('some-controller'): Use plugin getters

    • Add arrow function for service export

    • Add strapi to bootstrap function params

  • Where is the file(s) or folder to transform

Enjoy 🎉