ProvidePlugin

自动加载模块,而无需在任何地方importrequire它们。

new webpack.ProvidePlugin({
  identifier: 'module1',
  // ...
});

new webpack.ProvidePlugin({
  identifier: ['module1', 'property1'],
  // ...
});

默认情况下,模块解析路径为当前文件夹 (./**)node_modules

也可以指定完整路径

const path = require('path');

new webpack.ProvidePlugin({
  identifier: path.resolve(path.join(__dirname, 'src/module1')),
  // ...
});

每当在模块中将identifier作为自由变量遇到时,都会自动加载module,并且identifier将填充为已加载module的导出(或property以支持命名导出)。

要导入 ES2015 模块的默认导出,您必须指定模块的默认属性。

用法:jQuery

要自动加载jquery,我们可以将它公开的两个变量指向相应的节点模块

new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery',
});

然后在我们的任何源代码中

// in a module
$('#item'); // <= works
jQuery('#item'); // <= also works
// $ is automatically set to the exports of module "jquery"

用法:jQuery 与 Angular 1

Angular 查找 window.jQuery 以确定 jQuery 是否存在,请参阅 源代码

new webpack.ProvidePlugin({
  'window.jQuery': 'jquery',
});

用法:Lodash Map

new webpack.ProvidePlugin({
  _map: ['lodash', 'map'],
});

用法:Vue.js

new webpack.ProvidePlugin({
  Vue: ['vue/dist/vue.esm.js', 'default'],
});

5 位贡献者

sokrasimon04re-fortbyzykseckin92