AppWorks codemod scripts for rax, ice and react project.
$ npm i @appworks/codemod -g
$ appworks-codemod <transform> <path> [...options?]
transform
- name of transform, see available transforms below.path
- files or directory to transform.options?
- option for jscodeshift.
Example:
$ appworks-codemod plugin-rax-component-to-component ./
You can retrieve the recommended codemod of the current project through the check
method.
Options:
- directory: string, the target directory path
- files: string[], the target directory files path array
Return:
- results: IResult[] (see interface), the target project recommended codemod info array.
Example:
import glob from "glob";
import { check } from "@appworks/codemod";
const dir = "/xxx/xx";
glob(
"**/*",
{ cwd: dir, ignore: ["**/node_modules/**"], nodir: true, realpath: true },
function (er, files) {
check(dir, files).then((results) => {
console.log(results);
});
}
);
You can use the run
method to execute specific codemod.
Options:
- directory: string, the target directory path
- files: string[], the target directory files path array
- transform: string, the name of transform, see available transforms below.
Return:
- result: IResult (see interface), run codemod result.
Example:
import glob from "glob";
import { check } from "@appworks/codemod";
const dir = "/xxx/xx";
glob(
"**/*",
{ cwd: dir, ignore: ["**/node_modules/**"], nodir: true, realpath: true },
function (er, files) {
run(dir, files, "plugin-rax-component-to-component").then((result) => {
console.log(result);
});
}
);
IResult:
interface IResult {
transform: string; // transform key, see `Included Transforms`
title: string; // transform description title
title_en: string;
message: string; // transform description message
message_en: string;
severity: 0 | 1 | 2; // 0: advice 1: warning 2: error
mode: "run" | "check"; // mode, see API
docs: string; // docs url
output: string; // jscodeshift CLI output
npm_deprecate?: string; // same as https://docs.npmjs.com/cli/v7/commands/npm-deprecate/
}
Update plugin-rax-component
to plugin-component
. docs
Follow Alibaba FED lint rules, and use @iceworks/spec
best practices. docs