From 7be17c5dfd31f256ef466c3511b71c0212d59c88 Mon Sep 17 00:00:00 2001 From: Erik Arvidsson Date: Thu, 27 Oct 2016 16:24:03 -0700 Subject: [PATCH] Add a babel-preset-react module (#2770) This simplifies dependency handling --- js/babel-preset-noms/.gitignore | 1 + js/babel-preset-noms/README.md | 35 +++++++++++++++++++++ js/babel-preset-noms/index.js | 51 +++++++++++++++++++++++++++++++ js/babel-preset-noms/package.json | 27 ++++++++++++++++ 4 files changed, 114 insertions(+) create mode 100644 js/babel-preset-noms/.gitignore create mode 100644 js/babel-preset-noms/README.md create mode 100644 js/babel-preset-noms/index.js create mode 100644 js/babel-preset-noms/package.json diff --git a/js/babel-preset-noms/.gitignore b/js/babel-preset-noms/.gitignore new file mode 100644 index 0000000000..3c3629e647 --- /dev/null +++ b/js/babel-preset-noms/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/js/babel-preset-noms/README.md b/js/babel-preset-noms/README.md new file mode 100644 index 0000000000..33728826ab --- /dev/null +++ b/js/babel-preset-noms/README.md @@ -0,0 +1,35 @@ +# babel-preset-noms + +Babel preset for Noms applications. + +## Install + +```sh +$ npm install --save-dev babel-preset-noms +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "presets": ["noms"] +} +``` + +### Via CLI + +```sh +$ babel script.js --presets noms +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + presets: ["noms"] +}); +``` diff --git a/js/babel-preset-noms/index.js b/js/babel-preset-noms/index.js new file mode 100644 index 0000000000..2df6a1ac31 --- /dev/null +++ b/js/babel-preset-noms/index.js @@ -0,0 +1,51 @@ +// Copyright 2016 Attic Labs, Inc. All rights reserved. +// Licensed under the Apache License, version 2.0: +// http://www.apache.org/licenses/LICENSE-2.0 + +'use strict'; + +function preset(n) { + return require('babel-preset-' + n); +} + +function plugin(n) { + return require('babel-plugin-' + n); +} + +const plugins = [ + plugin('syntax-async-functions'), + plugin('transform-class-properties'), + plugin('transform-regenerator'), + [ + plugin('transform-runtime'), { + polyfill: false, + regenerator: true, + }, + ], +]; + +const production = { + presets: [ + preset('es2015'), + preset('es2016'), + preset('react'), + ], + plugins +}; + +const development = { + presets: [ + preset('es2016'), + preset('react'), + ], + plugins: [ + plugin('transform-es2015-modules-commonjs'), + ...plugins, + ], +}; + +// Env handling is currently broken in Babel. +// https://github.com/babel/babel/issues/4539 + +const env = process.env.BABEL_ENV || process.env.NODE_ENV; +module.exports = env === 'production' ? production : development; diff --git a/js/babel-preset-noms/package.json b/js/babel-preset-noms/package.json new file mode 100644 index 0000000000..1baa46118c --- /dev/null +++ b/js/babel-preset-noms/package.json @@ -0,0 +1,27 @@ +{ + "name": "babel-preset-noms", + "version": "1.0.0", + "description": "Babel preset for all Noms code.", + "homepage": "https://babeljs.io/", + "license": "Apache-2.0", + "repository": "https://github.com/attic-labs/noms/tree/master/js/babel-preset-noms", + "engines": { + "node": ">= 6", + }, + "dependencies": { + "babel-cli": "^6.14.0", + "babel-core": "^6.14.0", + "babel-generator": "^6.14.0", + "babel-plugin-syntax-async-functions": "^6.13.0", + "babel-plugin-transform-async-to-generator": "^6.8.0", + "babel-plugin-transform-class-properties": "^6.11.5", + "babel-plugin-transform-es2015-destructuring": "^6.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.14.0", + "babel-plugin-transform-es2015-parameters": "^6.11.4", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-es2015": "^6.14.0", + "babel-preset-es2016": "^6.16.0", + "babel-preset-react": "^6.11.1", + "babylon": "^6.11.1" + } +}