ES6 Tools
Transpilers¶
- Babel - Turn ES6+ code into vanilla ES5 with no runtime
- Traceur compiler - ES6 features > ES5. Includes classes, generators, promises, destructuring patterns, default parameters & more.
- es6ify - Traceur compiler wrapped as a Browserify v2 transform
- babelify - Babel transpiler wrapped as a Browserify transform
- es6-transpiler - ES6 > ES5. Includes classes, destructuring, default parameters, spread
- Square's es6-module-transpiler - ES6 modules to AMD or CJS
- Facebook's regenerator - transform ES6 yield/generator functions to ES5
- Facebook's jstransform - A simple utility for pluggable JS syntax transforms. Comes with a small set of ES6 -> ES5 transforms
- defs - ES6 block-scoped const and let variables to ES3 vars
- es6_module_transpiler-rails - ES6 Modules in the Rails Asset Pipeline
- Some Sweet.js macros that compile from ES6 to ES5
- Bitovi's transpile - Converts ES6 to AMD, CJS, and StealJS.
- regexpu — Transform Unicode-aware ES6 regular expressions to ES5
- Lebab - Transformations for ES5 code to ES6 (approximates)
Build-time transpilation¶
Gulp Plugins¶
- Babel: gulp-babel
- Traceur: gulp-traceur
- Regenerator: gulp-regenerator
- ES6 Module Transpiler: gulp-es6-module-transpiler
- es6-transpiler: gulp-es6-transpiler - ES6 → ES5
- es6-jstransform: gulp-jstransform - ES6 → ES5 using FB's jstransform
- regexpu: gulp-regexpu
- TypeScript: gulp-typescript
Grunt Tasks¶
- Babel: grunt-babel - Turn ES6+ code into vanilla ES5 with no runtime
- Traceur: grunt-traceur ES6 > ES5 transpilation, grunt-traceur-build
- ES6 Module Transpiler: grunt-es6-module-transpiler
- Regenerator: grunt-regenerator - ES6 generator functions to ES5
- grunt-microlib - tools for libs using ES6 module transpiler (sample Gruntfile)
- grunt-defs - ES6 block scoped const and let variables, to ES3
- es6-transpiler: grunt-es6-transpiler - ES6 → ES5
- TypeScript: grunt-ts - ES6+ > ES5/ES3 transpilation
Broccoli Plugins¶
- Babel: broccoli-babel-transpiler
- Traceur: broccoli-traceur
- Regenerator: broccoli-regenerator
- ES6 Transpiler: broccoli-transpiler
- ES6 Module Transpiler: broccoli-es6-module-transpiler
- ES6 fat arrow transpiler: broccoli-es6-arrow
- TypeScript: broccoli-tsc
Brunch Plugins¶
- Babel: babel-brunch
- ES6 Module Transpiler: es6-module-transpiler-brunch
- TypeScript: typescript-brunch
Webpack plugins¶
- Babel: babel-loader
- Traceur: traceur-compiler-loader
- TypeScript: awesome-typescript-loader
Duo plugins¶
- Babel: duo-babel
- TypeScript: duo-typescript
Connect plugins¶
- Babel: babel-connect
- TypeScript: typescript-middleware
Gobble plugins¶
- Babel: gobble-babel
- Traceur: gobble-es6-transpiler
Jade plugins¶
- Babel: jade-babel
- Traceur: jade-traceur
Jest plugins¶
- Babel: babel-jest
Karma plugins¶
- Babel: karma-babel-preprocessor
- Traceur: karma-traceur-preprocessor
- TypeScript: karma-typescript-preprocessor
Sprockets plugins¶
- Babel: sprockets-es6
- Traceur: sprockets-traceur
- TypeScript: typescript-rails
Browser plugins¶
- Scratch JS - A Chrome/Opera DevTools extension to run ES6 on a page with either Babel or Traceur
- generator-typescript - Yeoman generator for TypeScript apps
Mocha plugins¶
- Mocha Traceur - A simple plugin for Mocha to pass JS files through the Traceur compiler
Module Loaders¶
- ES6 Module Loader polyfill (compat with latest spec and Traceur)
- js-loaders - Mozilla's spec-compliant loader prototype
- JSPM - ES6, AMD, CJS module loading/package management
- Babel Module Loader
- beck.js - toolkit for ES6 Module Loader pipelines, shim for legacy environments
Boilerplates¶
- es6-boilerplate - Tooling to allow the community to use es6 now via traceur in conjunction with amd and browser global modules, with source maps, concatenation, minification, compression, and unit testing in real browsers.
- es6-jspm-gulp-boilerplate - Tooling to allow the community to use es6 now via babel in conjunction jspm, with source maps, concatenation, minification, compression, and unit testing in real browsers using es6.
Code generation¶
- generator-node-esnext - Yeoman generator for Traceur apps
- generator-es6-babel - Yeoman generator for Babel apps
- generator-gulp-babelify - Yeoman generator for Babel, Browserify and Gulp
- grunt-init-es6 - scaffold node modules with unit tests, authored in ES6
- Loom generators with ES6 ember modules
- Brunch plugin for ES6 module transpilation
Polyfills¶
- core-js - Modular and compact polyfills for ES6 including Symbols, Map, Set, Iterators, Promises, setImmediate, Array generics, etc. The standard library used by Babel.
- es6-shim - almost all new ES6 methods — from Map, Set, String, Array, Object, Object.is and more.
- WeakMap, Map, Set, HashMap - ES6 Collections
- Polymer's WeakMap shim
String.prototype.startsWith
String.prototype.endsWith
String.prototype.at
String.prototype.repeat
String.prototype.includes
String.prototype.codePointAt
String.fromCodePoint
Array.prototype.find
Array.prototype.findIndex
Array.from
Array.of
Object.assign
Number.isFinite
Math.sign
RegExp.prototype.match
RegExp.prototype.search
- es6-promise - polyfill for Promises matching the ES6 API
- ES6 Map Shim - destructive shim that follows the latest specification as closely as possible.
Function.create
- ES6 shim
- ES6 Symbol polyfill
- ES6 Map, Set, WeakMap
- harmony-reflect - ES6 reflection module (contains the Proxy API)
- ES5 based shims in pure CJS style - Array, Object, Number, Math and String functions/methods, plus Map, Set, Symbol and WeakMap objects
Editors¶
- ES6 syntax highlighting for Sublime Text and TextMate
- ES6 syntax support in WebStorm and PhpStorm, compilation to ES5 with file watchers or task runners
- DocPad plugin for Traceur
- Grammar and transpilation package for Atom
- Learn ES6 transpilation options in Webstorm Read Blog Post
Parsers¶
- Esprima - JavaScript parser supporting ES6, parses to ESTree AST format
- Acorn - A small, fast, JavaScript-based JavaScript parser with ES6 support, parses to SpiderMonkey AST format.
- esparse - ES6 parser written in ES6.
- Traceur compiler also has built-in parser available under
traceur.syntax.Parser
.
Other¶
- ES.next showcase - real-world usage examples of ES6 features
- looper - static analysis tools for ES6
- es6-module-packager
- es-dependency-graph and grunt-es-dependency-graph - Generate a list of imports and exports from ES6 module files, useful for preloading, bundling, etc.
- es6-import-validate and grunt-es6-import-validate - validate matching named/default import statements in ES6 modules.
- let-er - transpiles let-block block-scoping (not accepted into ES6) into either ES3 or ES6
- Recast - Esprima-based JavaScript syntax tree transformer, conservative pretty-printer, and automatic source map generator. Used by several of the transpilers listed above, including regenerator and es6-arrow-function.
- Paws on ES6 - Minimalist examples of ES6 functionalities.
- ES6 on node - How to use ES6 features in node.js.
- es6-translate - Uses the ES6 loader hooks to load (node flavored) commonjs packages in ES6.
- Isparta
- babel-node - Run node cli with ES6 transpiling using Babel.
- ES6 Lab setup - A simple setup for transpiling ES6 to ES5 using
Babel
ortraceur
withgulp
andjasmine
support. - TypeScript - A superset of ECMAScript with strict typing that aims to align with ES6
- Rollup - Rollup is a next-generation JavaScript module bundler. Author your app or library using ES2015 modules, then efficiently bundle them up into a single file for use in browsers and Node.js