How to use the require hook.
One of the ways you can use Babel is through the require hook. The require hook
will bind itself to node's require
and automatically compile files on the
fly. This is equivalent to CoffeeScript's
coffee-script/register.
Not suitable for libraries
The require hook automatically hooks itself into all node requires. This will pollute the global scope and introduce conflicts. If you're writing an application, it's completely fine to use. If, however, you're writing a library then you should compile your library and depend on the babel-runtime.
utility.inlineEnvironmentVariables
usePlease note the when used in conjunction.
$ npm install babel
require("babel/register");
All subsequent files required by node with the extensions .es6
, .es
, .jsx
and .js
will be transformed by Babel. The polyfill is also automatically required.
NOTE: By default all requires to node_modules
will be ignored. You can
override this by passing an ignore regex via:
require("babel/register")({
// This will override `node_modules` ignoring - you can alternatively pass
// an array of strings to be explicitly matched or a regex / glob
ignore: false
});
require("babel/register")({
// Optional ignore regex - if any filenames **do** match this regex then they
// aren't compiled.
ignore: /regex/,
// Ignore can also be specified as a function.
ignore: function(filename) {
if (filename === '/path/to/es6-file.js') {
return false;
} else {
return true;
}
},
// Optional only regex - if any filenames **don't** match this regex then they
// aren't compiled
only: /my_es6_folder/,
// See options above for usage
whitelist: [],
blacklist: [],
// Setting this will remove the currently hooked extensions of .es6, `.es`, `.jsx`
// and .js so you'll have to add them back if you want them to be used again.
extensions: [".es6", ".es", ".jsx", ".js"]
});
You can pass in all other options as well.
By default babel-node
and babel/register
will save to a json cache in your
temporary directory.
This will heavily improve with the startup and compilation of your files. There are however scenarios where you want to change this behaviour and there are environment variables exposed to allow you to do this.
Specify a different cache location.
$ BABEL_CACHE_PATH=/foo/my-cache.json babel-node script.js
Disable the cache.
$ BABEL_DISABLE_CACHE=1 babel-node script.js