ProvidePlugin

自动加载模块,而不必到处 importrequire

  1. new webpack.ProvidePlugin({
  2. identifier: 'module1',
  3. // ...
  4. });

or

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

任何时候,当 identifier 被当作未赋值的变量时,module 就会自动被加载,并且 identifier 会被这个 module 导出的内容所赋值。(或者被模块的 property 导出的内容所赋值,以支持命名导出(named export))。

对于 ES2015 模块的 default export,你必须指定模块的 default 属性。

使用:jQuery

要自动加载 jquery,我们可以将两个变量都指向对应的 node 模块:

  1. new webpack.ProvidePlugin({
  2. $: 'jquery',
  3. jQuery: 'jquery'
  4. });

然后在我们任意源码中:

  1. // in a module
  2. $('#item'); // <= 起作用
  3. jQuery('#item'); // <= 起作用
  4. // $ 自动被设置为 "jquery" 输出的内容

使用:jQuery 和 Angular 1

Angular 会寻找 window.jQuery 来决定 jQuery 是否存在, 查看源码

  1. new webpack.ProvidePlugin({
  2. 'window.jQuery': 'jquery'
  3. });

使用:Lodash Map

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

使用:Vue.js

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

贡献人员

byzyk byzyk re-fort re-fort seckin92 seckin92 simon04 simon04 sokra sokra