Rewrite your JavaScript & TypeScript source code with sweet new features.
TODO: Below is the README for esnext, the project this one came from. It will be replaced in time.
$ yarn global add esnext
# or, with `npm`:
$ npm install -g esnext
After installing, run esnext -h
for comprehensive usage instructions.
Translate some regular functions to arrow functions:
list.map(function(item) {
return item.name;
});
// ↑ becomes ↓
list.map(item => item.name);
Convert var
declarations to let
or const
as appropriate:
var arr = [];
for (var i = 0; i < 5; i++) {
arr.push(i);
}
// ↑ becomes ↓
const arr = [];
for (let i = 0; i < 5; i++) {
arr.push(i);
}
Use shorthand syntax for various object constructs:
let person = {
first: first,
last: last,
fullName: function() {
return `${first} ${last}`;
}
};
// ↑ becomes ↓
let person = {
first,
last,
fullName() {
return `${first} ${last}`;
}
};
Convert string concatenation to string or template literals:
let name = 'Brian' + ' ' + 'Donovan';
let greeting = 'Hello, ' + name;
// ↑ becomes ↓
let name = 'Brian Donovan';
let greeting = `Hello, ${name}`;
Convert assignments and declarations to use object destructuring syntax:
let a = obj.a,
b = obj.b;
(a = obj2.a), (b = obj2.b);
// ↑ becomes ↓
let { a, b } = obj;
({ a, b } = obj2);
Translate CommonJS modules into ES6 modules:
var readFile = require('fs').readFile;
const MagicString = require('magic-string');
let { ok, strictEqual: eq } = require('assert');
exports.doSomething = function() {
ok(1);
};
// ↑ becomes ↓
import { readFile } from 'fs';
import MagicString from 'magic-string';
import { ok, strictEqual as eq } from 'assert';
export function doSomething() {
ok(1);
}
{
'declarations.block-scope': {
/**
* Set this to `true` to only turn `var` into `let`, never `const`.
*/
disableConst: boolean
}
}