值得注意的是,如果您将ProvidePlugin
与externals
属性结合使用,它将允许您jQuery
传递到您的 webpack 模块闭包而无需显式地传递require
它。这对于重构具有许多不同文件引用的遗留代码很有用$
。
//webpack.config.js
module.exports = {
entry: './index.js',
output: {
filename: '[name].js'
},
externals: {
jquery: 'jQuery'
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
})
]
};
现在在 index.js
console.log(typeof $ === 'function');
将有一个编译输出,如下所示传递给webpackBootstrap
闭包:
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function($) {
console.log(typeof $ === 'function');
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
module.exports = jQuery;
/***/ }
/******/ ])
因此,您可以看到它$
正在从 CDN 引用全局/窗口jQuery
,但正在被传递到闭包中。我不确定这是预期的功能还是幸运的 hack,但它似乎对我的用例很有效。