5to6-codemod
codemods 的集合,可让您从 ES5 转换 JavaScript 代码使用 jscodeshift 到 ES6。
Usage
npm install -g jscodeshift
npm install 5to6-codemod
jscodeshift -t node_modules/5to6-codemod/transforms/[transform].js [files]
- Review changes via
git diff
. Keep what you want, throw it out if you don't. Magic!
Option flags
执行codemods时,可以这样配置选项:
jscodeshift -t node_modules/5to6-codemod/transforms/[transform].js [files] --key=value
Recast options
我们的transform会自动区分并通过通过 jscodeshift 重铸配置键。 Recast 配置的官方文档可以在此处找到。 我们目前支持以下 Recast 密钥:
esprima
inputSourceMap
lineTerminator
quote
range
reuseWhitespace
sourceFileName
sourceMapName
sourceRoot
tabWidth
tolerant
trailingComma
useTabs
wrapColumn
amd
- Transforms AMD style modules to ES6 import
/export
cjs
- Transforms CommonJS style require()
calls to ES6 import
statements
- This transformation accepts the following option flags:
hoist
: Enables hoisting require statements to the top
no-strict
- Removes "use strict" statements
exports
- Move CommonJS style module.exports
statements to ES6 export
statements
named-export-generation
- Adds named exports corresponding to default export object keys. Only valid for ES6 modules exporting an object as the default export.
let
- Replace all var
calls to use let
simple-arrow
- Replace all function expressions with a body of a sole return statement into arrow functions
Known issues
- Can't automagically figure out when you want to use
import * as varName
.
- End-of-line comments also missing in many situations
simple-arrow
loses comments in the function expression body
5to6-codemod
A collection of codemods that allow you to transform your JavaScript code from ES5 to ES6 using jscodeshift.
Usage
npm install -g jscodeshift
npm install 5to6-codemod
jscodeshift -t node_modules/5to6-codemod/transforms/[transform].js [files]
- Review changes via
git diff
. Keep what you want, throw it out if you don't. Magic!
Option flags
When executing codemods, you can configure options like so:
jscodeshift -t node_modules/5to6-codemod/transforms/[transform].js [files] --key=value
Recast options
Our transforms will automatically distinguish and pass through Recast config keys via jscodeshift. Official documentation for Recast's configuration can be found here. We currently support the following Recast keys:
esprima
inputSourceMap
lineTerminator
quote
range
reuseWhitespace
sourceFileName
sourceMapName
sourceRoot
tabWidth
tolerant
trailingComma
useTabs
wrapColumn
amd
- Transforms AMD style modules to ES6 import
/export
cjs
- Transforms CommonJS style require()
calls to ES6 import
statements
- This transformation accepts the following option flags:
hoist
: Enables hoisting require statements to the top
no-strict
- Removes "use strict" statements
exports
- Move CommonJS style module.exports
statements to ES6 export
statements
named-export-generation
- Adds named exports corresponding to default export object keys. Only valid for ES6 modules exporting an object as the default export.
let
- Replace all var
calls to use let
simple-arrow
- Replace all function expressions with a body of a sole return statement into arrow functions
Known issues
- Can't automagically figure out when you want to use
import * as varName
.
- End-of-line comments also missing in many situations
simple-arrow
loses comments in the function expression body