Javascript 通过webpack-4中的插件访问解析器
我正在为WebpackVersion4开发一个插件,我正在尝试访问,以便对输入文件进行一些预处理,但是我很难理解新的可编址API的“文档”以及我应该如何访问解析器 到目前为止,我有:Javascript 通过webpack-4中的插件访问解析器,javascript,webpack,webpack-4,webpack-plugin,Javascript,Webpack,Webpack 4,Webpack Plugin,我正在为WebpackVersion4开发一个插件,我正在尝试访问,以便对输入文件进行一些预处理,但是我很难理解新的可编址API的“文档”以及我应该如何访问解析器 到目前为止,我有: const MY_PLUGIN_NAME = "FooPlugin"; function Plugin() { } Plugin.prototype.apply = function(compiler) { compiler.hooks.normalModuleFactory.tap(MY_PLUGIN_N
const MY_PLUGIN_NAME = "FooPlugin";
function Plugin() {
}
Plugin.prototype.apply = function(compiler) {
compiler.hooks.normalModuleFactory.tap(MY_PLUGIN_NAME, function(factory) {
console.log('Got my factory here ', factory); // This is invoked as expected.
factory.hooks.parser.tap("varDeclaration", MY_PLUGIN_NAME, function() {
console.log('parser varDeclaration', arguments); // This is the line that's never invoked
}
}
}
我尝试了解析器的各种其他参数。点击函数,似乎没有任何帮助。我在如何访问解析器的钩子方面做错了什么吗?从中得到启发,它附加到解析器并添加了use strict代码>语句
apply(compiler) {
compiler.hooks.compilation.tap(
"YouPluginName",
(compilation, { normalModuleFactory }) => {
const handler = parser => {
parser.hooks.program.tap("YouPluginName", ast => {
// -------------^ the type of parser hook
// your code goes here
});
};
normalModuleFactory.hooks.parser
.for("javascript/auto")
.tap("UseStrictPlugin", handler);
normalModuleFactory.hooks.parser
.for("javascript/dynamic")
.tap("UseStrictPlugin", handler);
normalModuleFactory.hooks.parser
.for("javascript/esm")
.tap("UseStrictPlugin", handler);
}
);
}
从中得到启发,它附加到解析器并添加了use strict代码>语句
apply(compiler) {
compiler.hooks.compilation.tap(
"YouPluginName",
(compilation, { normalModuleFactory }) => {
const handler = parser => {
parser.hooks.program.tap("YouPluginName", ast => {
// -------------^ the type of parser hook
// your code goes here
});
};
normalModuleFactory.hooks.parser
.for("javascript/auto")
.tap("UseStrictPlugin", handler);
normalModuleFactory.hooks.parser
.for("javascript/dynamic")
.tap("UseStrictPlugin", handler);
normalModuleFactory.hooks.parser
.for("javascript/esm")
.tap("UseStrictPlugin", handler);
}
);
}
谢谢你的指点,这让我克服了我的问题。看起来缺少的部分是钩子图的关键,例如javascript/auto
,javascript/dynamic
,javascript/esm
。我怎么知道会使用这些?可能应该更新文档。。。谢谢你的指点,这让我克服了我的问题。看起来缺少的部分是钩子图的关键,例如javascript/auto
,javascript/dynamic
,javascript/esm
。我怎么知道会使用这些?可能应该更新文档。。。您现在可以投稿:]