In this lesson we'll show how to setup a .babelrc file with presets and plugins. Then create npm scripts that use babel-node and babel. With babel-preset-env we'll show how to target specific versions of node and how to use babel plugins, while not transpiling features (like async await) that are already supported by node natively.

 

package.json:

"devDependencies": {
    "babel-cli": "^6.24.1",
    "babel-plugin-transform-object-rest-spread": "^6.23.0",
    "babel-preset-env": "^1.5.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1"
  },

 

.babelrc:

{
  "presets": ["react", "es2015", ["env", {
    "targets": {
      "node": "current"
    }
  }]],
  "plugins": ["transform-object-rest-spread"]
}

node: "current", compile code based on your node version.

 

Node version larger than 7.6 will have async/await support by defualt. So if we already have 7.6 above, we don't want Babel to compile async/await to ES5 code.

  "presets": ["react", "es2015", ["env", {
    "targets": {
      "node": 7.6
    }
  }]]