Javascript 有没有办法给巴别塔插件提供自定义选项?
我可能错了,但我找不到任何解决方案来为我的自定义babel插件提供一些自定义选项。你知道我是如何做到这一点的吗 以下是我的构建过程,我将gulp与browserify和babelify结合使用:Javascript 有没有办法给巴别塔插件提供自定义选项?,javascript,plugins,babeljs,Javascript,Plugins,Babeljs,我可能错了,但我找不到任何解决方案来为我的自定义babel插件提供一些自定义选项。你知道我是如何做到这一点的吗 以下是我的构建过程,我将gulp与browserify和babelify结合使用: gulp.task("scripts", function() { return browserify({ entries: "myFile.js" }) .transform(babelify.configure({ plugins: ["./l
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/");
});
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
}
});
}
然后在我的插件中,我想检索我刚刚声明的customOptions对象。有没有办法做到这一点
谢谢
关于我找到了一条出路,但我很确定这不是一条正确的道路: 阅读巴别塔的代码,似乎有一个隐藏的选项称为“额外”。我使用该选项推送自定义选项:
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/");
});
然后,在我的插件中,我可以检索如下自定义选项:
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/");
});
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
}
});
}
我知道这绝对不是一个正确的方式。您有其他选择吗?最近在《巴别塔6》中,这种情况发生了变化。发件人: 插件可以指定选项。您可以在配置中这样做,方法是将其包装在数组中并提供一个options对象。例如:
{
"plugins": [
["transform-async-to-module-method", {
"module": "bluebird",
"method": "coroutine"
}]
]
}
Babel插件手册中的文档。我找不到在插件功能范围内访问插件选项的方法。似乎只能从访问者范围访问
state.opts
。我没有解决方案,但我只想指出有关插件选项的文档: