node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



Automatically and transparently use as little babel as possible with whatever version of node is in use.

Installing with a global helper:

npm install -g babel-autonode-init

And in a new project:




We only make one big assumption and that's that you keep your project js files in src/. Now, I don't ordinarily do that, but it makes the integration work this module has to do MUCH easier. I would love a patch that made it not care, but I'm probably not going to be motivated to write it myself.


The way the loader works is node specific and not appropriate for the frontend. I would be open to patches to make this more frontend friendly.

Installing by hand:

The above is the equivalent of:

npm install --save-dev babel babel-autonode
npm install --save babel-autonode-loader

and then adding this to your package.json file:

"scripts": {
  "transpile": "babel-autonode",
  "prestart": "npm run transpile",
  "prepublish": "npm run transpile"

And the final bit it does is a little more complicated. It creates a file named loader.js, which is just:

module.exports = require('babel-autonode-loader')

And then it patches your package.json copying the main field (the entry point for your module, which defaults to index.js) to babel-autonode.main and sets main to loader.js


Any time you run npm install (with no arguments), npm pack or npm publish then babel-autonode will be called to refresh your compiles. Don't worry though, it should be very fast if nothing has changed.

If you want to manually do a build, run npm run transpile.


The babel-autonode expects to be run from your module root (where your package.json is) and scans your src folder for files that have changed since it was last run. Any changed files are recompiled with babel into each version supported by autonode. Compile targets look like:


The provided loader.js, will load your entry point from the appropriate v8 folder for you automatically.

What's missing?

Probably a lot of documentation on using this thing, but I wanted to get it out there!