Awesome
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
Transforms
amd
- Transforms AMD style modules to ES6import
/export
cjs
- Transforms CommonJS stylerequire()
calls to ES6import
statements- This transformation accepts the following option flags:
hoist
: Enables hoisting require statements to the top
- This transformation accepts the following option flags:
no-strict
- Removes "use strict" statementsexports
- Move CommonJS stylemodule.exports
statements to ES6export
statementsnamed-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 allvar
calls to uselet
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