【发布时间】:2016-06-10 05:40:02
【问题描述】:
我正在尝试编写一个 webpack 插件,该插件会累积与特定模式匹配的 js require/import 调用,在它们被解析之前将它们从源中删除(因为解析将失败),然后将累积的信息传递给单独的 bundle-建设过程。如何使用插件修改源代码?此外,插件甚至是正确的方法吗?
【问题讨论】:
标签: webpack
我正在尝试编写一个 webpack 插件,该插件会累积与特定模式匹配的 js require/import 调用,在它们被解析之前将它们从源中删除(因为解析将失败),然后将累积的信息传递给单独的 bundle-建设过程。如何使用插件修改源代码?此外,插件甚至是正确的方法吗?
【问题讨论】:
标签: webpack
您描述的input => output 模式有更多Webpack 加载器的行为。
一个 webpack loader 最简单的形式是一个函数,它接受一个 source 参数,然后必须返回一个源:
function allySimpleButAwesomeWebpackLoader(source) {
var yingSources = source + 'SomeString';
return yingSources;
}
插件可以完成加载程序无法完成的所有工作。当人们想学习如何为 webpack 插件实现生命周期钩子时,我喜欢将人们推荐给 ProgressPlugin - 它是 webpack 库的一部分。
插件最简单的形式是一个带有一个原型方法apply 的 ES5 OOP 函数。这个 apply 函数被提供了一个 compiler 变量,作为对 Compiler API 的访问。
function AllyAwesomePlugin(optionsObject) {
this.pluginOptions = optionsObject;
}
AllyAwesomePlugin.prototype.apply = function(compiler) {
}
Here 是关于如何编写 Webpack 插件的一些很棒的文档以及有关 Webpack 编译器/插件 API 的更多信息。
【讨论】: