Skip to content

Collection of codemods for LinguiJS

License

Notifications You must be signed in to change notification settings

lingui/codemods

Repository files navigation

Linguijs Codemods

This repository contains a collection of codemod scripts for use with JSCodeshift that help update Lingui APIs.


Usage

npx @lingui/codemods <transform> <path> [...options]

  • transform - name of transform, see available transforms below.
  • path - files or directory to transform
  • use the --dry option for a dry-run
  • use --print to print the output for comparison
  • use --remove-unused-imports to remove unused imports once finished the codemod

This will start an interactive wizard, and then run the specified transform.

Included Transforms

v2-to-v3

Converts some outdated standards from lingui version 2.x.x to new features and best practices introduced in lingui version 3.x.x

npx @lingui/codemods v2-to-v3 <path>

split-macro-imports

Converts @lingui/macro imports to @lingui/core/macro and @lingui/react/macro.

npx @lingui/codemods split-macro-imports <path>

Visit the Migration guide from 4.x to 5.x for more information.

jscodeshift options

To pass more options directly to jscodeshift, use --jscodeshift="...". For example:

npx @lingui/codemods --jscodeshift="--run-in-band --verbose=2"

See all available options here.

Recast Options

Options to recast's printer can be provided through jscodeshift's printOptions command line argument

npx @lingui/codemods <transform> <path> --jscodeshift="--printOptions='{\"quote\":\"double\"}'"

Usage without params

A CLI is built-in to help you migrate your codebase, will ask you some questions:

➜  project git:(master) npx @lingui/codemods
? On which files or directory should the codemods be applied? for ex: ./src
? Which dialect of JavaScript do you use? for ex: JavaScript | Typescript | JavaScript with Flow
? Which transform would you like to apply? for ex: `v2-to-v3`

License

@lingui/codemods is MIT licensed.