1.8.0 • Published 7 years ago

babel-origin v1.8.0

Weekly downloads
2
License
CC0-1.0
Repository
github
Last release
7 years ago

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:

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

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.