babel-origin v1.8.0
babel-origin
:milky_way: Babel seamless integration
Introduction
babel-origin allows to easily setup Babel, similar to how it used to be set back in the time of Babel 5. The following features work out of the box with 0 configuration:
- Latest ECMAScript preset
- Stage 0 features
- React with JSX
- Expose the CommonJS modules for backward compatibility with native Node
- Strip flow types annotation
- There are also some production-only features: check them out!
The Babel configuration is also exposed in a standard way, so all the external tools will be able to use it as usual, to name a few:
All of this with a single line of code!
Rationale
I found myself wanted to create a lot of projects, but I want to keep them as simple as possible to make the maintenance easier. Though I want to use babel to compile my sources, I find it to be too complex for my basic needs, which appear to be always the same:
- support for latest ECMAScript version (including stage 0 features)
- support for JSX notation
- integration with Jest, Ava, Webpack
- disable ES6 modules while using Webpack 2
This package encapsulate the babel complexity so that a one can leverage its power with minimal configuration, and easier maintenance.
Installation
$ npm install -D babel-origin
Usage
Add the following to your package.json
:
{
"babel": { "extends": "babel-origin" }
}
Then it just works!
{
"scripts": {
"prepublish": "babel src --out-dir=lib"
}
}
Production
babel-origin supports a production environment, adding stuff commonly needed in production, like:
To enable this mode, you should define either BABEL_ENV=production
or NODE_ENV=production
. I recommended the later as it also allows for dead-code elimination in some libraries (e.g.: React).
Overloading
You use babel-origin by extending its configuration, if the need arises you still have total control. Which means you can overload it however you want:
{
"babel": {
"extends": "babel-origin",
"comments": false
}
}
Ava
Add this to your package.json
:
{
"ava": {
"require": [
"babel-register"
],
"babel": "inherit"
}
}
Jest
Working out of the box!
Webpack 1
Add this to your Webpack configuration:
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader'
}
]
}
Webpack 2
Add this to your Webpack configuration:
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
}
]
},
Others
All the tools will still work the same as with a standard Babel setup. See the official documentation for more information.
Issues
If you face any issue, please report it on the bug tracker.
Contributing
If you want to improve this software by adding new features, or fixing bugs, please fork the project and create a pull request.
Changelog
1.8.0
- Include babel-plugin-transform-runtime
1.7.0
- Include babel-runtime
1.6.0
- Include babel-watch
1.5.0
- Strip flow types annotations
1.4.0
- Add babel-eslint
1.3.0
- Add inline source maps
1.2.0
- Specify dependencies versions with
^
- Specify dependencies versions with
1.1.0
- Add code minification through Babili
1.0.0
- Stable version
License
Creative Commons — CC0 1.0 Universal
To the extent possible under law, Aymeric Beaumet has waived all copyright and related or neighboring rights to this work.