需要注意的一件很酷的事是,如果您将ProvidePlugin
结合使用和externals
属性,它将使您jQuery
无需显式地传递到webpack模块闭包中require
。这对于使用许多不同文件引用来重构遗留代码很有用$
。
module.exports = {
entry: './index.js',
output: {
filename: '[name].js'
},
externals: {
jquery: 'jQuery'
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
})
]
};
现在在index.js中
console.log(typeof $ === 'function');
将会有一个编译后的输出,如下所示传递到webpackBootstrap
闭包中:
([
function(module, exports, __webpack_require__) {
(function($) {
console.log(typeof $ === 'function');
}.call(exports, __webpack_require__(1)))
},
function(module, exports, __webpack_require__) {
module.exports = jQuery;
}
])
因此,您可以看到它从CDN$
引用了全局/窗口jQuery
,但是正在传递给闭包。我不确定这是预期的功能还是幸运的破解,但对于我的用例来说似乎效果很好。
new
在webpack.ProvidePlugin
webpack.github.io/docs/list-of-plugins.html