有没有办法为 babel 插件提供自定义选项?
Is there a way to give custom options to a babel plugin?
我可能错了,但我找不到任何解决方案来为我的自定义 babel 插件提供一些自定义选项。你知道我如何做到这一点吗?
这是我的构建过程,我将 gulp 与 browserify 和 babelify 一起使用:
gulp.task("scripts", function() {
return browserify({
entries: "myFile.js"
})
.transform(babelify.configure({
plugins: ["./lib/myPlugin:after"]
}))
.bundle()
.pipe(source("all.js"))
.pipe("build/");
});
我想为我的插件提供一些自定义数据,就像这样:
gulp.task("scripts", function() {
return browserify({
entries: "myFile.js"
})
.transform(babelify.configure({
myCustomOptions: {
rootPath: "some path",
customInfo: "..."
}
plugins: ["./lib/myPlugin:after"]
}))
.bundle()
.pipe(source("all.js"))
.pipe("build/");
});
然后在我的插件中,我想检索我刚刚声明的 customOptions 对象。有没有办法实现这样的目标?
谢谢,
此致
我找到了出路,但我很确定这不是正确的方法:
阅读babel代码,好像有个隐藏选项叫"extra"。我使用该选项推送我的自定义选项:
gulp.task("scripts", function() {
return browserify({
entries: "myFile.js"
})
.transform(babelify.configure({
extra: {
myPlugin: {
// here i put my custom data
}
},
plugins: ["./lib/myPlugin:after"]
}))
.bundle()
.pipe(source("all.js"))
.pipe("build/");
});
然后在我的插件中我可以像这样检索我的自定义选项:
var myPlugin = function(babel) {
var t = babel.types;
var pluginConf;
return new babel.Transformer("babel-platform", {
CallExpression(node, parent, scope, config) {
pluginConf = pluginConf || config.opts.extra["myPlugin"] || {};
// Doing some stuff here on the CallExpression
}
});
}
我知道这绝对不是一个正确的方法。您有其他选择吗?
这最近在 Babel 6 中发生了变化。来自 the docs:
Plugins can specify options. You can do so in your config by wrapping it in an array and providing a options object. For example:
{
"plugins": [
["transform-async-to-module-method", {
"module": "bluebird",
"method": "coroutine"
}]
]
}
Plugin Options Babel 插件手册中的文档。
我可能错了,但我找不到任何解决方案来为我的自定义 babel 插件提供一些自定义选项。你知道我如何做到这一点吗?
这是我的构建过程,我将 gulp 与 browserify 和 babelify 一起使用:
gulp.task("scripts", function() {
return browserify({
entries: "myFile.js"
})
.transform(babelify.configure({
plugins: ["./lib/myPlugin:after"]
}))
.bundle()
.pipe(source("all.js"))
.pipe("build/");
});
我想为我的插件提供一些自定义数据,就像这样:
gulp.task("scripts", function() {
return browserify({
entries: "myFile.js"
})
.transform(babelify.configure({
myCustomOptions: {
rootPath: "some path",
customInfo: "..."
}
plugins: ["./lib/myPlugin:after"]
}))
.bundle()
.pipe(source("all.js"))
.pipe("build/");
});
然后在我的插件中,我想检索我刚刚声明的 customOptions 对象。有没有办法实现这样的目标?
谢谢,
此致
我找到了出路,但我很确定这不是正确的方法:
阅读babel代码,好像有个隐藏选项叫"extra"。我使用该选项推送我的自定义选项:
gulp.task("scripts", function() {
return browserify({
entries: "myFile.js"
})
.transform(babelify.configure({
extra: {
myPlugin: {
// here i put my custom data
}
},
plugins: ["./lib/myPlugin:after"]
}))
.bundle()
.pipe(source("all.js"))
.pipe("build/");
});
然后在我的插件中我可以像这样检索我的自定义选项:
var myPlugin = function(babel) {
var t = babel.types;
var pluginConf;
return new babel.Transformer("babel-platform", {
CallExpression(node, parent, scope, config) {
pluginConf = pluginConf || config.opts.extra["myPlugin"] || {};
// Doing some stuff here on the CallExpression
}
});
}
我知道这绝对不是一个正确的方法。您有其他选择吗?
这最近在 Babel 6 中发生了变化。来自 the docs:
Plugins can specify options. You can do so in your config by wrapping it in an array and providing a options object. For example:
{ "plugins": [ ["transform-async-to-module-method", { "module": "bluebird", "method": "coroutine" }] ] }
Plugin Options Babel 插件手册中的文档。