Merge pull request #3638 from babel/christophehurpeau-patch-2
[Bug Fix] option manager: val = val.buildPreset should be before the check if the preset supports options
This commit is contained in:
commit
96f31ed38f
@ -268,16 +268,17 @@ export default class OptionManager {
|
||||
val = require(presetLoc);
|
||||
}
|
||||
|
||||
if (typeof val !== "function" && options !== undefined) {
|
||||
throw new Error(`Options ${JSON.stringify(options)} passed to ` +
|
||||
(presetLoc || "a preset") + " which does not accept options.");
|
||||
}
|
||||
|
||||
// For compatibility with babel-core < 6.13.x, allow presets to export an object with a
|
||||
// a 'buildPreset' function that will return the preset itself, while still exporting a
|
||||
// simple object (rather than a function), for supporting old Babel versions.
|
||||
if (typeof val === "object" && val.buildPreset) val = val.buildPreset;
|
||||
|
||||
|
||||
if (typeof val !== "function" && options !== undefined) {
|
||||
throw new Error(`Options ${JSON.stringify(options)} passed to ` +
|
||||
(presetLoc || "a preset") + " which does not accept options.");
|
||||
}
|
||||
|
||||
if (typeof val === "function") val = val(context, options);
|
||||
|
||||
if (typeof val !== "object") {
|
||||
|
||||
@ -44,7 +44,11 @@ function run(task) {
|
||||
|
||||
newOpts.plugins = wrapPackagesArray("plugin", newOpts.plugins);
|
||||
newOpts.presets = wrapPackagesArray("preset", newOpts.presets).map(function (val) {
|
||||
return val[0];
|
||||
if (val.length > 2) {
|
||||
throw new Error(`Unexpected extra options ${JSON.stringify(val.slice(2))} passed to preset.`);
|
||||
}
|
||||
|
||||
return val;
|
||||
});
|
||||
|
||||
return newOpts;
|
||||
|
||||
@ -34,6 +34,7 @@
|
||||
"babel-plugin-transform-regenerator": "^6.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-helper-transform-fixture-test-runner": "^6.9.0"
|
||||
"babel-helper-transform-fixture-test-runner": "^6.9.0",
|
||||
"babel-helper-plugin-test-runner": "^6.8.0"
|
||||
}
|
||||
}
|
||||
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/empty-options/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/empty-options/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
7
packages/babel-preset-es2015/test/fixtures/preset-options/empty-options/expected.js
vendored
Normal file
7
packages/babel-preset-es2015/test/fixtures/preset-options/empty-options/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/empty-options/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/empty-options/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", {}]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/loose-false/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/loose-false/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
7
packages/babel-preset-es2015/test/fixtures/preset-options/loose-false/expected.js
vendored
Normal file
7
packages/babel-preset-es2015/test/fixtures/preset-options/loose-false/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/loose-false/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/loose-false/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "loose": false }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/loose/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/loose/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/loose/expected.js
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/loose/expected.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/loose/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/loose/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "loose": true }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
7
packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/expected.js
vendored
Normal file
7
packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
define(["exports"], function (exports) {
|
||||
"use strict";
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
});
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "modules": "amd", "loose": true }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-commonjs/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-commonjs/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
7
packages/babel-preset-es2015/test/fixtures/preset-options/modules-commonjs/expected.js
vendored
Normal file
7
packages/babel-preset-es2015/test/fixtures/preset-options/modules-commonjs/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-commonjs/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-commonjs/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "modules": "commonjs" }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-false/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-false/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-false/expected.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-false/expected.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a() {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-false/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-false/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "modules": false }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-systemjs/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-systemjs/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
12
packages/babel-preset-es2015/test/fixtures/preset-options/modules-systemjs/expected.js
vendored
Normal file
12
packages/babel-preset-es2015/test/fixtures/preset-options/modules-systemjs/expected.js
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
System.register([], function (_export, _context) {
|
||||
"use strict";
|
||||
|
||||
function a() {}
|
||||
|
||||
_export("a", a);
|
||||
|
||||
return {
|
||||
setters: [],
|
||||
execute: function () {}
|
||||
};
|
||||
});
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-systemjs/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-systemjs/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "modules": "systemjs" }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-umd/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/modules-umd/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
21
packages/babel-preset-es2015/test/fixtures/preset-options/modules-umd/expected.js
vendored
Normal file
21
packages/babel-preset-es2015/test/fixtures/preset-options/modules-umd/expected.js
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
(function (global, factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define(["exports"], factory);
|
||||
} else if (typeof exports !== "undefined") {
|
||||
factory(exports);
|
||||
} else {
|
||||
var mod = {
|
||||
exports: {}
|
||||
};
|
||||
factory(mod.exports);
|
||||
global.actual = mod.exports;
|
||||
}
|
||||
})(this, function (exports) {
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
});
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-umd/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/modules-umd/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015", { "modules": "umd" }]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/no-options/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/no-options/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
7
packages/babel-preset-es2015/test/fixtures/preset-options/no-options/expected.js
vendored
Normal file
7
packages/babel-preset-es2015/test/fixtures/preset-options/no-options/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
5
packages/babel-preset-es2015/test/fixtures/preset-options/no-options/options.json
vendored
Normal file
5
packages/babel-preset-es2015/test/fixtures/preset-options/no-options/options.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"presets": [
|
||||
["es2015"]
|
||||
]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/fixtures/preset-options/string-preset/actual.js
vendored
Normal file
1
packages/babel-preset-es2015/test/fixtures/preset-options/string-preset/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
export function a () {}
|
||||
7
packages/babel-preset-es2015/test/fixtures/preset-options/string-preset/expected.js
vendored
Normal file
7
packages/babel-preset-es2015/test/fixtures/preset-options/string-preset/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.a = a;
|
||||
function a() {}
|
||||
3
packages/babel-preset-es2015/test/fixtures/preset-options/string-preset/options.json
vendored
Normal file
3
packages/babel-preset-es2015/test/fixtures/preset-options/string-preset/options.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"presets": ["es2015"]
|
||||
}
|
||||
1
packages/babel-preset-es2015/test/preset-options.js
Normal file
1
packages/babel-preset-es2015/test/preset-options.js
Normal file
@ -0,0 +1 @@
|
||||
require("babel-helper-plugin-test-runner")(__dirname);
|
||||
Loading…
x
Reference in New Issue
Block a user