From 465f57b93fb090306be697554e8126c001edd072 Mon Sep 17 00:00:00 2001 From: Michael Contento Date: Sat, 13 Aug 2016 11:00:04 +0200 Subject: [PATCH] refactor to use babel preset options --- 0.12.js | 21 - 4.0.js | 2 - 4.1.js | 2 - 4.2.js | 2 - 4.3.js | 2 - 4.4.js | 2 - 5.0.js | 2 - 5.1.js | 2 - 5.10.js | 2 - 5.11.js | 2 - 5.12.js | 13 - 5.2.js | 2 - 5.3.js | 2 - 5.4.js | 2 - 5.5.js | 2 - 5.6.js | 2 - 5.7.js | 2 - 5.8.js | 2 - 5.9.js | 2 - 6.0.js | 2 - 6.1.js | 2 - 6.2.js | 9 - 6.3.js | 13 - README.html | 1050 -------------------------------------------------- README.md | 36 +- extras.js | 20 - index.js | 106 +++++ package.json | 9 +- test.sh | 2 +- 29 files changed, 141 insertions(+), 1176 deletions(-) delete mode 100644 0.12.js delete mode 100644 4.0.js delete mode 100644 4.1.js delete mode 100644 4.2.js delete mode 100644 4.3.js delete mode 100644 4.4.js delete mode 100644 5.0.js delete mode 100644 5.1.js delete mode 100644 5.10.js delete mode 100644 5.11.js delete mode 100644 5.12.js delete mode 100644 5.2.js delete mode 100644 5.3.js delete mode 100644 5.4.js delete mode 100644 5.5.js delete mode 100644 5.6.js delete mode 100644 5.7.js delete mode 100644 5.8.js delete mode 100644 5.9.js delete mode 100644 6.0.js delete mode 100644 6.1.js delete mode 100644 6.2.js delete mode 100644 6.3.js delete mode 100644 README.html delete mode 100644 extras.js create mode 100644 index.js diff --git a/0.12.js b/0.12.js deleted file mode 100644 index 8ff9eab..0000000 --- a/0.12.js +++ /dev/null @@ -1,21 +0,0 @@ -// V8: 3.28.71.19 -module.exports = { - presets: [ - require('./4.0') - ], - plugins: [ - require('babel-plugin-check-es2015-constants'), - require('babel-plugin-transform-es2015-arrow-functions'), - require('babel-plugin-transform-es2015-block-scoped-functions'), - require('babel-plugin-transform-es2015-block-scoping'), - require('babel-plugin-transform-es2015-classes'), - require('babel-plugin-transform-es2015-computed-properties'), - require('babel-plugin-transform-es2015-for-of'), - require('babel-plugin-transform-es2015-literals'), - require('babel-plugin-transform-es2015-object-super'), - require('babel-plugin-transform-es2015-shorthand-properties'), - require('babel-plugin-transform-es2015-template-literals'), - require('babel-plugin-transform-es2015-typeof-symbol'), - [require('babel-plugin-transform-regenerator'), { async: false, asyncGenerators: false }], - ] -} diff --git a/4.0.js b/4.0.js deleted file mode 100644 index 249b231..0000000 --- a/4.0.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.5.103.30 -module.exports = require('./4.1'); diff --git a/4.1.js b/4.1.js deleted file mode 100644 index c471aa4..0000000 --- a/4.1.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.5.103.35 -module.exports = require('./4.2'); diff --git a/4.2.js b/4.2.js deleted file mode 100644 index e5728cc..0000000 --- a/4.2.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.5.103.35 -module.exports = require('./4.3'); diff --git a/4.3.js b/4.3.js deleted file mode 100644 index 69fb870..0000000 --- a/4.3.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.5.103.35 -module.exports = require('./4.4'); diff --git a/4.4.js b/4.4.js deleted file mode 100644 index 22c5c10..0000000 --- a/4.4.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.5.103.36 -module.exports = require('./5.0'); diff --git a/5.0.js b/5.0.js deleted file mode 100644 index e40b03a..0000000 --- a/5.0.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.28 -module.exports = require('./5.1'); diff --git a/5.1.js b/5.1.js deleted file mode 100644 index 5b87c82..0000000 --- a/5.1.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.2'); diff --git a/5.10.js b/5.10.js deleted file mode 100644 index a17fe96..0000000 --- a/5.10.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.11'); diff --git a/5.11.js b/5.11.js deleted file mode 100644 index 6562c40..0000000 --- a/5.11.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.12'); diff --git a/5.12.js b/5.12.js deleted file mode 100644 index 19e9801..0000000 --- a/5.12.js +++ /dev/null @@ -1,13 +0,0 @@ -// V8: 4.6.85.32 -module.exports = { - presets: [ - require('./6.0') - ], - plugins: [ - // preset-es2015 - require('babel-plugin-transform-es2015-parameters'), - require('babel-plugin-transform-es2015-spread'), - require('babel-plugin-transform-es2015-sticky-regex'), - require('babel-plugin-transform-es2015-unicode-regex') - ] -} diff --git a/5.2.js b/5.2.js deleted file mode 100644 index b1b8a1e..0000000 --- a/5.2.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.3'); diff --git a/5.3.js b/5.3.js deleted file mode 100644 index 8be2db1..0000000 --- a/5.3.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.4'); diff --git a/5.4.js b/5.4.js deleted file mode 100644 index 2074b9e..0000000 --- a/5.4.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.5'); diff --git a/5.5.js b/5.5.js deleted file mode 100644 index b59e456..0000000 --- a/5.5.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.6'); diff --git a/5.6.js b/5.6.js deleted file mode 100644 index c731f74..0000000 --- a/5.6.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.7'); diff --git a/5.7.js b/5.7.js deleted file mode 100644 index 4d9c5d1..0000000 --- a/5.7.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.8'); diff --git a/5.8.js b/5.8.js deleted file mode 100644 index 1863528..0000000 --- a/5.8.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.9'); diff --git a/5.9.js b/5.9.js deleted file mode 100644 index 73bd3dc..0000000 --- a/5.9.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 4.6.85.31 -module.exports = require('./5.10'); diff --git a/6.0.js b/6.0.js deleted file mode 100644 index c74b322..0000000 --- a/6.0.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 5.0.71.35 -module.exports = require('./6.1'); diff --git a/6.1.js b/6.1.js deleted file mode 100644 index 05ad237..0000000 --- a/6.1.js +++ /dev/null @@ -1,2 +0,0 @@ -// V8: 5.0.71.35 -module.exports = require('./6.2'); diff --git a/6.2.js b/6.2.js deleted file mode 100644 index 3c3b562..0000000 --- a/6.2.js +++ /dev/null @@ -1,9 +0,0 @@ -// V8: 5.0.71.47 -module.exports = { - presets: [ - require('./6.3') - ], - plugins: [ - require('babel-plugin-array-includes').default - ] -} diff --git a/6.3.js b/6.3.js deleted file mode 100644 index 20ca531..0000000 --- a/6.3.js +++ /dev/null @@ -1,13 +0,0 @@ -// V8: 5.0.71.57 -module.exports = { - presets: [ - require('./extras') - ], - plugins: [ - require('babel-plugin-transform-es2015-destructuring'), - require('babel-plugin-transform-es2015-function-name'), - require('babel-plugin-transform-es2015-modules-commonjs'), - require('babel-plugin-transform-es2015-duplicate-keys'), - require('babel-plugin-transform-exponentiation-operator') - ] -} diff --git a/README.html b/README.html deleted file mode 100644 index 556cfef..0000000 --- a/README.html +++ /dev/null @@ -1,1050 +0,0 @@ -README

babel-preset-modern-node

-

Babel preset for building modern node apps with the least amount of
-transformations as possible.

-

build
-dependencies
-devDependencies

-

license
-npm version
-npm downloads

-

Installation

-
npm install --save-dev babel-preset-modern-node
-
-

Usage

-
    -
  1. Read “Configuring Babel 6” article for more information about babel@6
    -configuration.
  2. -
  3. Decide which version of node you want to support
  4. -
  5. Use modern-node/$VERSION (e.g. modern-node/5.5) as your preset
  6. -
- -

.babelrc

-
{
-  "presets": ["modern-node/5.5"]
-}
-
- -

Via CLI

-
babel script.js --presets modern-node/5.5
-
-

Via Node API

-
require('babel-core').transform('code', {
-  presets: ['modern-node/5.5'],
-})
-
\ No newline at end of file diff --git a/README.md b/README.md index b6df57c..6700492 100644 --- a/README.md +++ b/README.md @@ -18,31 +18,49 @@ transformations as possible. ## Usage -1. Read ["Configuring Babel 6" article][1] for more information about babel@6 -configuration. -2. Decide which version of node you want to support -3. Use `modern-node/$VERSION` (e.g. `modern-node/6.0`) as your preset -4. Optionally add babel `stage-0` +Simply use this preset as any other. Following options can be passed to +configure `babel-preset-modern-node` to your taste: + +- Set loose mode optimizations (**default:** `false`) + - `loose = true|false` +- Module loader to use (**default:** `commonjs`) + - `modules = (false|commonjs|amd|umd|systemjs)` +- Min node version compatibility (**default:** `process.versions.node`) + - `version = "5.10.2"` ### Via `.babelrc` (recommended) -**.babelrc** +```json +{ + "presets": ["modern-node"] +} +``` + +Or: ```json { - "presets": ["modern-node/6.0", "stage-0"] + "presets": [["modern-node", { "loose": true, ... }]] } ``` ### Via CLI - babel script.js --presets modern-node/6.0,stage-0 + babel script.js --presets modern-node ### Via Node API ```js require('babel-core').transform('code', { - presets: ['modern-node/6.0', 'stage-0'], + presets: ['modern-node'], +}) +``` + +Or: + +```js +require('babel-core').transform('code', { + presets: [['modern-node', { "loose": true, ... }]], }) ``` diff --git a/extras.js b/extras.js deleted file mode 100644 index 05918d4..0000000 --- a/extras.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - plugins: [ - // foo.default -> foo["default"] - require('babel-plugin-transform-es3-member-expression-literals'), - // default: "bar" -> "default": "bar" - require('babel-plugin-transform-es3-property-literals'), - // "use strict" - require('babel-plugin-transform-strict-mode') - ] -}; - -// __VERSION__ -const fs = require('fs'); -try { - if (fs.statSync('package.json').isFile()) { - module.exports.plugins.push(require('babel-plugin-version-inline').default); - } -} catch (err) { - // ignore: ENOENT: no such file or directory, stat 'package.json' -} diff --git a/index.js b/index.js new file mode 100644 index 0000000..434915b --- /dev/null +++ b/index.js @@ -0,0 +1,106 @@ +/** + * This preset was originally an object, before function-based configurable presets were introduced. + * For backward-compatibility with anything that may have been loading this preset and expecting + * it to be a simple Babel config object, we maintain the old config here. + */ +module.exports = preset({}); + +// For backward compatibility with babel-core < v6.13.x, we use the 'buildPreset' property +// of the preset object for the preset creation function. +Object.defineProperty(module.exports, "buildPreset", { + configurable: true, + writable: true, + // We make this non-enumerable so old versions of babel-core won't see it as an unknown property, + // while allowing new versions to see it as a preset builder function. + enumerable: false, + value: preset, +}); + +function preset(context, opts) { + var moduleTypes = ["commonjs", "amd", "umd", "systemjs"]; + var loose = false; + var modules = "commonjs"; + var version = process.versions.node; + + if (opts !== undefined) { + if (opts.loose !== undefined) loose = opts.loose; + if (opts.modules !== undefined) modules = opts.modules; + if (opts.version !== undefined) version = opts.version; + } + + if (typeof loose !== "boolean") { + throw new Error("Preset modern-node 'loose' option must be a boolean."); + } + + if (modules !== false && moduleTypes.indexOf(modules) === -1) { + throw new Error("Preset modern-node 'modules' option must be 'false' to indicate no modules\n" + + "or a module type which be be one of: 'commonjs' (default), 'amd', 'umd', 'systemjs'"); + } + + if (!version) { + throw new Error("Preset moder-node 'version' option must be set"); + } + + var semver = require('semver'); + function enableFor(constraint) { + var fullVersion = version.split('.').length == 2 + ? version + '.0' + : version; + return semver.satisfies(fullVersion, '<= ' + constraint); + } + + var fs = require('fs'); + var versionplugin = false; + try { + if (fs.statSync('package.json').isFile()) { + versionplugin = require('babel-plugin-version-inline').default; + } + } catch (err) { + // ignore: ENOENT: no such file or directory, stat 'package.json' + } + + return { + plugins: [ +// ---- v0.12 + enableFor('0.12') && require('babel-plugin-check-es2015-constants'), + enableFor('0.12') && require('babel-plugin-transform-es2015-arrow-functions'), + enableFor('0.12') && require('babel-plugin-transform-es2015-block-scoped-functions'), + enableFor('0.12') && require('babel-plugin-transform-es2015-block-scoping'), + enableFor('0.12') && [require("babel-plugin-transform-es2015-classes"), { loose }], + enableFor('0.12') && [require("babel-plugin-transform-es2015-computed-properties"), { loose }], + enableFor('0.12') && [require("babel-plugin-transform-es2015-for-of"), { loose }], + enableFor('0.12') && require('babel-plugin-transform-es2015-literals'), + enableFor('0.12') && require('babel-plugin-transform-es2015-object-super'), + enableFor('0.12') && require('babel-plugin-transform-es2015-shorthand-properties'), + enableFor('0.12') && [require("babel-plugin-transform-es2015-template-literals"), { loose }], + enableFor('0.12') && require('babel-plugin-transform-es2015-typeof-symbol'), + enableFor('0.12') && [require('babel-plugin-transform-regenerator'), { async: false, asyncGenerators: false }], +// ---- v5.12 + enableFor('5.12') && require('babel-plugin-transform-es2015-parameters'), + enableFor('5.12') && [require("babel-plugin-transform-es2015-spread"), { loose }], + enableFor('5.12') && require('babel-plugin-transform-es2015-sticky-regex'), + enableFor('5.12') && require('babel-plugin-transform-es2015-unicode-regex'), +// ---- v6.2 + enableFor('6.2') && require('babel-plugin-array-includes').default, +// ---- v6.3 + enableFor('6.3') && [require("babel-plugin-transform-es2015-destructuring"), { loose }], + enableFor('6.3') && require('babel-plugin-transform-es2015-function-name'), + enableFor('6.3') && modules === "commonjs" && [require("babel-plugin-transform-es2015-modules-commonjs"), { loose }], + enableFor('6.3') && modules === "systemjs" && [require("babel-plugin-transform-es2015-modules-systemjs"), { loose }], + enableFor('6.3') && modules === "amd" && [require("babel-plugin-transform-es2015-modules-amd"), { loose }], + enableFor('6.3') && modules === "umd" && [require("babel-plugin-transform-es2015-modules-umd"), { loose }], + enableFor('6.3') && require('babel-plugin-transform-es2015-duplicate-keys'), + enableFor('6.3') && require('babel-plugin-transform-exponentiation-operator'), +// --- EXTRAS + // foo.default -> foo["default"] + require('babel-plugin-transform-es3-member-expression-literals'), + // default: "bar" -> "default": "bar" + require('babel-plugin-transform-es3-property-literals'), + // "use strict" + require('babel-plugin-transform-strict-mode'), + // __VERSION__ + versionplugin, + // filter out falsy values + ].filter(Boolean) + }; +} diff --git a/package.json b/package.json index 87b583f..7d1745f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "test": "make test" }, "files": [ - "/*.js" + "/index.js" ], "keywords": [ "babel", @@ -19,6 +19,7 @@ "node", "es6", "es2015", + "es2016", "javascript" ], "license": "MIT", @@ -35,7 +36,10 @@ "babel-plugin-transform-es2015-for-of": "^6.8.0", "babel-plugin-transform-es2015-function-name": "^6.9.0", "babel-plugin-transform-es2015-literals": "^6.8.0", + "babel-plugin-transform-es2015-modules-amd": "^6.8.0", "babel-plugin-transform-es2015-modules-commonjs": "^6.11.5", + "babel-plugin-transform-es2015-modules-systemjs": "^6.12.0", + "babel-plugin-transform-es2015-modules-umd": "^6.12.0", "babel-plugin-transform-es2015-object-super": "^6.8.0", "babel-plugin-transform-es2015-parameters": "^6.11.4", "babel-plugin-transform-es2015-shorthand-properties": "^6.8.0", @@ -49,7 +53,8 @@ "babel-plugin-transform-exponentiation-operator": "^6.8.0", "babel-plugin-transform-regenerator": "^6.11.4", "babel-plugin-transform-strict-mode": "^6.11.3", - "babel-plugin-version-inline": "^1.0.0" + "babel-plugin-version-inline": "^1.0.0", + "semver": "^5.3.0" }, "devDependencies": { "babel-cli": "^6.11.4", diff --git a/test.sh b/test.sh index 94ace6e..6dceb7d 100755 --- a/test.sh +++ b/test.sh @@ -7,7 +7,7 @@ echo "> Testing preset ${VERSION} ..." echo "> Running babel ..." rm -rf build/ mkdir build/ -./node_modules/.bin/babel --quiet --presets ../$VERSION --out-dir build tests +./node_modules/.bin/babel --quiet --presets ../ --out-dir build tests for file in $(ls -1 build/*.js); do echo "> Testing ${file} ..."