How to use Babel with your tool of choice
$ npm install -g babel
$ npm install -g babel
Available from browser.js
inside the folder of a babel-core
npm release.
$ npm install --save-dev broccoli-babel-transpiler
$ npm install --save-dev babelify
$ npm install --save-dev babel-brunch
$ npm install --save-dev duo-babel
$ npm install --save-dev gobble-babel
$ npm install --save-dev grunt-babel
$ npm install --save-dev gulp-babel
Select babel
as the transpiler when running jspm init -p
or to switch an existing project into Babel use:
jspm dl-loader --babel
Installed already on most Unix systems. Available from gow on Windows.
$ npm install requirejs-babel
$ npm install --save-dev rollup
$ npm install --save-dev rollup-plugin-babel
$ gem install sprockets-es6
$ npm install --save-dev babel-loader
npm install --save-dev ember-cli-babel
$ meteor add ecmascript
$ gem install sprockets-es6
$ npm install --save-dev sails-hook-babel
$ npm install --save-dev babel
$ npm install --save-dev babel-jest
$ npm install --save-dev karma-babel-preprocessor
$ npm install babel-connect
$ npm install -g babel
$ npm install --save-dev babel-core
$ gem install babel-transpiler
$ npm install jade-babel
$ npm install -g babel
$ npm install -g babel-node-debug
require("babel/register");
All subsequent files required by node with the extensions .es6
, .es
, .jsx
and .js
will be transformed by Babel. The polyfill specified in polyfill is also automatically required.
Not suitable for libraries
The require hook automatically hooks itself into all node requires. This will pollute the global scope and introduce conflicts. Because of this it's not suitable for libraries, if however you're writing an application then it's completely fine to use.
For full documentation on the Babel require hook see the usage docs.
Add the type="text/babel"
attribute to your <script>
tags. For example:
<script src="node_modules/babel-core/browser.js"></script>
<script type="text/babel">
class Test {
test() {
return "test";
}
}
var test = new Test;
test.test(); // "test"
</script>
For full documentation on browser compilation see the usage docs.
var babelTranspiler = require("broccoli-babel-transpiler");
var scriptTree = babelTranspiler(inputTree, options);
For more information see the babel/broccoli-babel-transpiler repo.
$ browserify script.js -t babelify --outfile bundle.js
browserify({ debug: true })
.transform(babelify);
Or a more complete example:
var fs = require("fs");
var browserify = require("browserify");
var babelify = require("babelify");
browserify({ debug: true })
.transform(babelify)
.require("./script.js", { entry: true })
.bundle()
.on("error", function (err) { console.log("Error: " + err.message); })
.pipe(fs.createWriteStream("bundle.js"));
CLI
$ browserify -d -e script.js -t [ babelify --blacklist regenerator ]
browserify().transform(babelify.configure({
blacklist: ["regenerator"]
}))
{
"transform": [["babelify", { "blacklist": ["regenerator"] }]]
}
For more information see the babel/babelify repo.
That's it! Set babel options in your brunch config (such as brunch-config.coffee
) except
for filename
and sourceMap
which are handled internally.
plugins:
babel:
whitelist: ["arrowFunctions"]
format:
semicolons: false
For more information see the babel/babel-brunch repo.
$ duo --use duo-babel
Duo(root)
.entry(entry)
.use(babel)
.run(fn);
For more information see the babel/duo-babel repo.
var gobble = require("gobble");
module.exports = gobble("src").transform("babel", options);
For more information see the babel/gobble-babel repo.
require("load-grunt-tasks")(grunt); // npm install --save-dev load-grunt-tasks
grunt.initConfig({
"babel": {
options: {
sourceMap: true
},
dist: {
files: {
"dist/app.js": "src/app.js"
}
}
}
});
grunt.registerTask("default", ["babel"]);
For more information see the babel/grunt-babel repo.
var gulp = require("gulp");
var babel = require("gulp-babel");
gulp.task("default", function () {
return gulp.src("src/app.js")
.pipe(babel())
.pipe(gulp.dest("dist"));
});
Use gulp-sourcemaps like this:
var gulp = require("gulp");
var sourcemaps = require("gulp-sourcemaps");
var babel = require("gulp-babel");
var concat = require("gulp-concat");
gulp.task("default", function () {
return gulp.src("src/**/*.js")
.pipe(sourcemaps.init())
.pipe(babel())
.pipe(concat("all.js"))
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("dist"));
});
For more information see the babel/gulp-babel repo.
Babel will automatically be used when loading any source with import
or export
module syntax.
JSX support is currently disabled by jspm. To re-enable it, add `"blacklist": []` to `babelOptions` in the jspm configuration file.
SRC = $(wildcard src/*.js)
LIB = $(SRC:src/%.js=lib/%.js)
lib: $(LIB)
lib/%.js: src/%.js
mkdir -p $(@D)
babel $< -o $@
$ make
Add the following paths to your configuration:
paths: {
es6: "node_modules/requirejs-babel/es6",
babel: "node_modules/requirejs-babel/babel-4.6.6.min"
}
Then reference files via the es6!
plugin name:
define(["es6!your-es6-module"], function (module) {
// ...
});
For more information see the mikach/requirejs-babel repo.
var rollup = require("rollup");
var babel = require("rollup-plugin-babel");
rollup.rollup({
entry: "src/main.js",
plugins: [ babel() ]
}).then(function (bundle) {
bundle.write({
dest: "dist/bundle.js",
format: "umd"
});
});
For more information see the rollup and rollup-plugin-babel repos.
# Gemfile
gem "sprockets"
gem "sprockets-es6"
require "sprockets/es6"
For more information see the TannerRogalsky/sprockets-es6 repo.
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
]
}
var Person = require("babel!./Person.js").default;
new Person();
For more information see the babel/babel-loader repo.
That's it! Any files with a .js
extension will automatically be compiled
with Babel.
As of Meteor 1.2, the ecmascript
package is installed by default for all
new apps, so meteor add ecmascript
is only necessary for existing apps.
For more information see the
ecmascript
README.md.
# Gemfile
gem "sprockets"
gem "sprockets-es6"
require "sprockets/es6"
For more information see the TannerRogalsky/sprockets-es6 repo.
In your package.json
file make the following changes:
{
"scripts": {
"test": "mocha --compilers js:babel/register"
}
}
In your package.json
file make the following changes:
{
"scripts": {
"test": "jest"
},
"jest": {
"scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
"testFileExtensions": ["es6", "js"],
"moduleFileExtensions": ["js", "json", "es6"]
}
}
For more information see the babel/babel-jest repo.
module.exports = function(config) {
config.set({
files: [
"src/**/*.js",
"test/**/*.js"
],
preprocessors: {
"src/**/*.js": ["babel"],
"test/**/*.js": ["babel"]
},
"babelPreprocessor": {
// options go here
}
});
};
For more information see the babel/karma-babel-preprocessor repo.
var babelMiddleware = require("babel-connect");
app.use(babelMiddleware({
options: {
// options to use when transforming files
},
src: "assets",
dest: "cache"
}));
app.use(connect.static("cache"));
For more information see the babel/babel-connect repo.
In your package.json
file make the following changes:
{
"scripts": {
"babel-node": "babel-node --stage 0 --ignore='foo|bar|baz'"
}
}
Then call your script with:
$ nodemon --exec npm run babel-node -- path/to/script.js
Calling nodemon with babel-node may lead to arguments getting parsed incorrectly if you forget to use a double dash. Using npm-scripts helpers prevent this. If you chose to skip using npm-scripts, it can be expressed as:
$ nodemon --exec babel-node --stage 0 --ignore='foo\|bar\|baz' -- path/to/script.js
require("babel-core").transform("code", options);
For full documentation on the Babel API see the usage docs.
require 'babel/transpiler'
Babel::Transpiler.transform File.read("foo.es6")
For more information see the babel/ruby-babel-transpiler repo.
var jade = require("jade");
var babel = require("jade-babel");
jade.filters.babel = babel({});
OR
var jade = require("jade");
var babel = require("jade-babel");
jade = babel({}, jade);
Now you can use ES6 in your jade templates as following.
script
:babel
console.log("Hello World !!!");
class Person {
constructor(name) {
this.name = name;
}
sayName(){
console.log(`Hello, my name is ${this.name}`);
}
}
var person = new Person("Apoxx");
person.sayName();
For more information see the babel/jade-babel repo.
In Preferences | Tools | File watchers, click + button and select Babel file watcher from the list.
Specify the path to Babel executable and click Ok.
By default all files with .js
and .jsx
extensions will be automatically compiled with Babel upon change. The generated ES5 files and source maps will be saved next to original files.
Lastly, in Languages & Frameworks | JavaScript | JavaScript language version, choose ECMAScript 6.
For more information see the post in the WebStorm blog.
$ babel-node-debug path/to/script.js
# Or use the alias
$ bode-debug path/to/script.js
For more information see the crabdude/babel-node-debug repo.