diff --git a/packages/babel-preset-env/README.md b/packages/babel-preset-env/README.md index a2a0cbbc68..9f417e76e7 100644 --- a/packages/babel-preset-env/README.md +++ b/packages/babel-preset-env/README.md @@ -231,7 +231,7 @@ Enable ["loose" transformations](http://2ality.com/2015/12/babel6-loose-mode.htm ### `modules` -`"amd" | "umd" | "systemjs" | "commonjs" | false`, defaults to `"commonjs"`. +`"amd" | "umd" | "systemjs" | "commonjs" | "cjs" | false`, defaults to `"commonjs"`. Enable transformation of ES6 module syntax to another module type. diff --git a/packages/babel-preset-env/src/module-transformations.js b/packages/babel-preset-env/src/module-transformations.js index e7378a37cf..ad50bdc263 100644 --- a/packages/babel-preset-env/src/module-transformations.js +++ b/packages/babel-preset-env/src/module-transformations.js @@ -1,6 +1,7 @@ export default { amd: "transform-modules-amd", commonjs: "transform-modules-commonjs", + cjs: "transform-modules-commonjs", systemjs: "transform-modules-systemjs", umd: "transform-modules-umd", }; diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/input.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/input.js new file mode 100644 index 0000000000..103a9f0d5f --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/input.js @@ -0,0 +1 @@ +export function a () {} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/options.json b/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/options.json new file mode 100644 index 0000000000..428a076dfb --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/options.json @@ -0,0 +1,8 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": "amd", + "loose": true + }] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/output.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/output.js new file mode 100644 index 0000000000..99f234e54b --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-amd-loose/output.js @@ -0,0 +1,8 @@ +define(["exports"], function (_exports) { + "use strict"; + + _exports.__esModule = true; + _exports.a = a; + + function a() {} +}); diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/input.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/input.js new file mode 100644 index 0000000000..4b992e32e1 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/input.js @@ -0,0 +1 @@ +import a from "a"; diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/options.json b/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/options.json new file mode 100644 index 0000000000..e77c229268 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": "cjs" + }] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/output.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/output.js new file mode 100644 index 0000000000..5948a626bd --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-cjs/output.js @@ -0,0 +1,5 @@ +"use strict"; + +var _a = _interopRequireDefault(require("a")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/input.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/input.js new file mode 100644 index 0000000000..4b992e32e1 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/input.js @@ -0,0 +1 @@ +import a from "a"; diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/options.json b/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/options.json new file mode 100644 index 0000000000..fa7dc2fe4c --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": "commonjs" + }] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/output.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/output.js new file mode 100644 index 0000000000..5948a626bd --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-commonjs/output.js @@ -0,0 +1,5 @@ +"use strict"; + +var _a = _interopRequireDefault(require("a")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/input.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/input.js new file mode 100644 index 0000000000..4b992e32e1 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/input.js @@ -0,0 +1 @@ +import a from "a"; diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/options.json b/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/options.json new file mode 100644 index 0000000000..bf0180f31f --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": "systemjs" + }] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/output.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/output.js new file mode 100644 index 0000000000..f35a247f09 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-systemjs/output.js @@ -0,0 +1,11 @@ +System.register(["a"], function (_export, _context) { + "use strict"; + + var a; + return { + setters: [function (_a) { + a = _a.default; + }], + execute: function () {} + }; +}); diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/input.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/input.js new file mode 100644 index 0000000000..4b992e32e1 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/input.js @@ -0,0 +1 @@ +import a from "a"; diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/options.json b/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/options.json new file mode 100644 index 0000000000..2550ff91f1 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/options.json @@ -0,0 +1,7 @@ +{ + "presets": [ + ["../../../../lib", { + "modules": "umd" + }] + ] +} diff --git a/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/output.js b/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/output.js new file mode 100644 index 0000000000..f6258b3eb5 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/preset-options/modules-umd/output.js @@ -0,0 +1,19 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(["a"], factory); + } else if (typeof exports !== "undefined") { + factory(require("a")); + } else { + var mod = { + exports: {} + }; + factory(global.a); + global.input = mod.exports; + } +})(this, function (_a) { + "use strict"; + + _a = _interopRequireDefault(_a); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +}); diff --git a/packages/babel-preset-es2015/README.md b/packages/babel-preset-es2015/README.md index 7044d19a45..e02eb7a937 100644 --- a/packages/babel-preset-es2015/README.md +++ b/packages/babel-preset-es2015/README.md @@ -44,7 +44,7 @@ Enable "loose" transformations for any plugins in this preset that allow them. ### `modules` -`"amd" | "umd" | "systemjs" | "commonjs" | false`, defaults to `"commonjs"`. +`"amd" | "umd" | "systemjs" | "commonjs" | "cjs" | false`, defaults to `"commonjs"`. Enable transformation of ES6 module syntax to another module type. diff --git a/packages/babel-preset-es2015/src/index.js b/packages/babel-preset-es2015/src/index.js index 15812af785..a80bf685ee 100644 --- a/packages/babel-preset-es2015/src/index.js +++ b/packages/babel-preset-es2015/src/index.js @@ -24,7 +24,7 @@ import transformES2015Instanceof from "@babel/plugin-transform-instanceof"; import transformRegenerator from "@babel/plugin-transform-regenerator"; export default function(api, opts = {}) { - const moduleTypes = ["commonjs", "amd", "umd", "systemjs"]; + const moduleTypes = ["commonjs", "cjs", "amd", "umd", "systemjs"]; let loose = false; let modules = "commonjs"; let spec = false; @@ -72,7 +72,10 @@ export default function(api, opts = {}) { transformES2015BlockScoping, transformES2015TypeofSymbol, transformES2015Instanceof, - modules === "commonjs" && [transformES2015ModulesCommonJS, optsLoose], + (modules === "commonjs" || modules === "cjs") && [ + transformES2015ModulesCommonJS, + optsLoose, + ], modules === "systemjs" && [transformES2015ModulesSystemJS, optsLoose], modules === "amd" && [transformES2015ModulesAMD, optsLoose], modules === "umd" && [transformES2015ModulesUMD, optsLoose], diff --git a/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/input.js b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/input.js new file mode 100644 index 0000000000..103a9f0d5f --- /dev/null +++ b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/input.js @@ -0,0 +1 @@ +export function a () {} diff --git a/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/options.json b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/options.json new file mode 100644 index 0000000000..faabf84cdb --- /dev/null +++ b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/options.json @@ -0,0 +1,5 @@ +{ + "presets": [ + ["es2015", { "modules": "cjs" }] + ] +} diff --git a/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/output.js b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/output.js new file mode 100644 index 0000000000..b3e522ea5e --- /dev/null +++ b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-cjs/output.js @@ -0,0 +1,8 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.a = a; + +function a() {}