Support 'spec' option on babel-preset-es2015 (#3671)

Allows enabling the spec options in the couple of presets that have it.

Generally enables a slower, but more correct codepath.
This commit is contained in:
Diogo Franco 2016-08-24 03:28:19 +09:00 committed by Henry Zhu
parent 3bf479789d
commit 53ed4e5eb8

View File

@ -27,13 +27,16 @@ function preset(context, opts) {
const moduleTypes = ["commonjs", "amd", "umd", "systemjs"];
let loose = false;
let modules = "commonjs";
let spec = false;
if (opts !== undefined) {
if (opts.loose !== undefined) loose = opts.loose;
if (opts.modules !== undefined) modules = opts.modules;
if (opts.spec !== undefined) spec = opts.spec;
}
if (typeof loose !== "boolean") throw new Error("Preset es2015 'loose' option must be a boolean.");
if (typeof spec !== "boolean") throw new Error("Preset es2015 'spec' option must be a boolean.");
if (modules !== false && moduleTypes.indexOf(modules) === -1) {
throw new Error("Preset es2015 'modules' option must be 'false' to indicate no modules\n" +
"or a module type which be be one of: 'commonjs' (default), 'amd', 'umd', 'systemjs'");
@ -41,10 +44,10 @@ function preset(context, opts) {
return {
plugins: [
[require("babel-plugin-transform-es2015-template-literals"), { loose }],
[require("babel-plugin-transform-es2015-template-literals"), { loose, spec }],
require("babel-plugin-transform-es2015-literals"),
require("babel-plugin-transform-es2015-function-name"),
[require("babel-plugin-transform-es2015-arrow-functions")],
[require("babel-plugin-transform-es2015-arrow-functions"), { spec }],
require("babel-plugin-transform-es2015-block-scoped-functions"),
[require("babel-plugin-transform-es2015-classes"), { loose }],
require("babel-plugin-transform-es2015-object-super"),