Skip to content

strapi/codemods

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

@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 🎉

About

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

Topics

Resources

Stars

Watchers

Forks