add extra transform option

This commit is contained in:
Sebastian McKenzie 2015-04-15 14:59:26 -07:00
parent b483c16fe2
commit bb30a64f8d
3 changed files with 18 additions and 3 deletions

View File

@ -16,6 +16,7 @@ import Logger from "./logger";
import parse from "../../helpers/parse"; import parse from "../../helpers/parse";
import Scope from "../../traversal/scope"; import Scope from "../../traversal/scope";
import slash from "slash"; import slash from "slash";
import clone from "lodash/lang/clone";
import * as util from "../../util"; import * as util from "../../util";
import path from "path"; import path from "path";
import each from "lodash/collection/each"; import each from "lodash/collection/each";
@ -120,7 +121,9 @@ export default class File {
throw new Error("Deprecated option " + key + ": " + option.deprecated); throw new Error("Deprecated option " + key + ": " + option.deprecated);
} }
if (val == null) val = option.default || val; if (val == null) {
val = clone(option.default);
}
var optionParser = optionParsers[option.type]; var optionParser = optionParsers[option.type];
if (optionParser) val = optionParser(key, val); if (optionParser) val = optionParser(key, val);

View File

@ -15,8 +15,9 @@
"hidden": true "hidden": true
}, },
"pluginOptions": { "extra": {
"hidden": true "hidden": true,
"default": {}
}, },
"moduleId": { "moduleId": {

View File

@ -1,3 +1,5 @@
require("../../lib/babel/api/node");
var buildExternalHelpers = require("../../lib/babel/tools/build-external-helpers"); var buildExternalHelpers = require("../../lib/babel/tools/build-external-helpers");
var transform = require("../../lib/babel/transformation"); var transform = require("../../lib/babel/transformation");
var assert = require("assert"); var assert = require("assert");
@ -21,6 +23,15 @@ suite("api", function () {
}, /Unknown helper foob/); }, /Unknown helper foob/);
}); });
test("extra options", function () {
var file1 = new File({ extra: { foo: "bar" } });
assert.equal(file1.opts.extra.foo, "bar");
var file2 = new File;
var file3 = new File;
assert.ok(file2.opts.extra !== file3.opts.extra);
});
suite("buildExternalHelpers", function () { suite("buildExternalHelpers", function () {
test("all", function () { test("all", function () {
var script = buildExternalHelpers(); var script = buildExternalHelpers();