Node.js 用于定义模块的Webpack自定义插件
我正在尝试为Webpack编写一个小的定制插件,它将构建一个定制的Modernizer对象并公开它。我已经找到了和,但加载程序似乎有问题(即使我直接传递选项,它也需要一个空文件Node.js 用于定义模块的Webpack自定义插件,node.js,webpack,modernizr,webpack-2,Node.js,Webpack,Modernizr,Webpack 2,我正在尝试为Webpack编写一个小的定制插件,它将构建一个定制的Modernizer对象并公开它。我已经找到了和,但加载程序似乎有问题(即使我直接传递选项,它也需要一个空文件.modernizerrc),插件只能创建一个单独的文件 我从前面提到的插件中借用了一些代码,但无法理解最后一步(如何在构建文件中公开modernizer): 网页包配置 然而,它似乎创建了一个单独的modernizr.js文件,而我希望modernizr代码嵌入到我的输出文件中。非常感谢您的帮助 const modern
.modernizerrc
),插件只能创建一个单独的文件
我从前面提到的插件中借用了一些代码,但无法理解最后一步(如何在构建文件中公开modernizer
):
网页包配置
然而,它似乎创建了一个单独的modernizr.js
文件,而我希望modernizr
代码嵌入到我的输出文件中。非常感谢您的帮助
const modernizr = require('modernizr'),
ConcatSource = require('webpack-sources/lib/ConcatSource'),
CachedSource = require('webpack-sources/lib/CachedSource');
class BuildModernizrPlugin {
constructor(props = {}) {
let plugin = this;
plugin._props = props;
}
apply(compiler) {
let plugin = this;
compiler.plugin('after-compile', (compiler, callback) => {
modernizr.build(plugin._props, result => {
plugin._modernizr = result;
callback();
});
});
compiler.plugin('emit', (compilation, callback) => {
let source = new ConcatSource();
source.add(plugin._modernizr);
compilation.assets['modernizr.js'] = new CachedSource(source);
callback();
});
}
}
{
//...
plugins: [
new BuildModernizrPlugin({
options: [
'setClasses'
],
'feature-detects': [
'es6/promises'
]
})
]
}