babel-multi-env
babel
CLI replacement with multiple node version support bybabel-preset-env
andbabel-plugin-transform-runtime
. Useful for node.js libraries/modules
Usage
Transforms:
example/src/index.js
;; { const content = await "package.json" "utf8"; const json = JSON; jsonversion = nextVersion; await "package.json" JSON "utf8" ; return console;}
with the command:
cd exampleyarn babel-multi-env --multi-versions 8.0.0 6.0.0 4.0.0 0.12.0 0.10.0 --given src/index.js --out-dir lib
and output these files:
example/lib/index.jsexample/lib/index__0.10.0__.jsexample/lib/index__0.12.0__.jsexample/lib/index__4.0.0__.jsexample/lib/index__6.0.0__.jsexample/lib/index__8.0.0__.js
where
example/lib/index.js
var gte = gte; var version = processversion; if moduleexports = ; else if moduleexports = ; else if moduleexports = ; else if moduleexports = ; else moduleexports = ;
example/lib/index__8.0.0__.js
"use strict";var _interopRequireDefault = ; Object;exportsdemoBumpVersion = demoBumpVersion;var _stringify = ;var _fs = ;var _util = ; { const content = await 0 _utildefault_fsdefaultreadFile "package.json" "utf8" ; const json = JSON; jsonversion = nextVersion; await 0 _utildefault_fsdefaultwriteFile "package.json" 0 _stringifydefaultjson null 4 "utf8" ; return console;}
example/lib/index__6.0.0__.js
"use strict";var _interopRequireDefault = ;Object;exportsdemoBumpVersion = void 0;var _stringify = ;var _asyncToGenerator2 = ;var _fs = ;var _util = ;let demoBumpVersion = { var _ref = 0 _asyncToGenerator2default { const content = 0 _utildefault_fsdefaultreadFile "package.json" "utf8" ; const json = JSON; jsonversion = nextVersion; 0 _utildefault_fsdefaultwriteFile"package.json" 0 _stringifydefaultjson null 4 "utf8"; return console; }; return { return _ref; };};exportsdemoBumpVersion = demoBumpVersion;
……and you get the idea.
More sample code for node@4, node@0.12 and node@0.10
/* lib/index__4.0.0__.js */"use strict";var _interopRequireDefault = ;Object;exportsdemoBumpVersion = void 0;var _regenerator = ;var _stringify = ;var _asyncToGenerator2 = ;var _fs = ;var _util = ; var { var _ref = 0 _asyncToGenerator2default /*#__PURE__*/ _regeneratordefault; return { return _ref; };};exportsdemoBumpVersion = demoBumpVersion;
/* lib/index__0.12.0__.js */"use strict";var _interopRequireDefault = ;Object;exportsdemoBumpVersion = void 0;var _regenerator = ;var _stringify = ;var _asyncToGenerator2 = ;var _fs = ;var _util = ;var { var _ref = 0 _asyncToGenerator2default /*#__PURE__*/ _regeneratordefault; return { return _ref; };};exportsdemoBumpVersion = demoBumpVersion;
/* lib/index__0.10.0__.js */"use strict";var _interopRequireDefault = ;Object;exportsdemoBumpVersion = void 0;var _regenerator = ;var _stringify = ;var _asyncToGenerator2 = ;var _fs = ;var _util = ;var { var _ref = 0 _asyncToGenerator2default /*#__PURE__*/ _regeneratordefault; return { return _ref; };};exportsdemoBumpVersion = demoBumpVersion;
Installation
npm i --save-dev babel-multi-env# or yarn add --dev babel-multi-env
peerDependencies
Note on the There are currently five peerDependencies listed under the package.json for babel-multi-env
. Be sure not to screw up their versions sicne babel@^7
are currently in beta and can be found under the next dist-tags on npm.
dependencies
Your should add these to your dependencies
:
- "babel-runtime": "^7.0.0-beta.3"
- "semver": "^5.4.1"
since they'll be used in the runtime.
devDependencies
And, these three for the code generation only:
- "babel-core": "^7.0.0-beta.3",
- "babel-plugin-transform-runtime": "^7.0.0-beta.3",
- "babel-preset-env": "^7.0.0-beta.3",
Options
[babel-multi-env] --multi-versions list of supported semver versions. Example: 8.0.0 6.0.0 4.0.0 [array] [required] --given source glob patterns [array] [required] --out-dir compile into an output directory [string] [required] [babel-preset-env] --use-built-ins apply babel-preset-env