minimize: false
},
// ...忽略
};
重点需要关注一下
config.externals 属性,打印输出该变量的值:
[{
vue: 'vue',
// 排除所有UI组件的源代码
'element-ui/packages/option':'element-ui/lib/option',
// ...
// 排除国际化的源代码
'element-ui/src/locale': 'element-ui/lib/locale',
// 排除utils方法的源代码
'element-ui/src/utils/vue-popper': 'element-ui/lib/utils/vue-popper',
'element-ui/src/mixins/emitter': 'element-ui/lib/mixins/emitter',
'element-ui/src/transitions/collapse-transition': 'element-ui/lib/transitions/collapse-transition'
// ...
},
// var nodeExternals = require('webpack-node-externals');
// nodeExternals()
[Function]];externals属性可以将一些特定的依赖从输出的bundle中排除,例如在开发态中组件之间有依赖关系,
element-ui/packages/pagination 中引入
element-ui/packages/option 组件:
pagecages/pagination/src/pagination.js
// pagination组件中需要用到option组件
import ElOption from 'element-ui/packages/option';
// ...Webpack构建后,可以发现在
element-ui.common.js 中并没有将
element-ui/packages/option 组件打包在内,而只是更改了它的引入路径
element-ui/lib/option (在实现 按需引入 功能时会用
webpack --config build/webpack.component.js 脚本构建出该文件)。
// lib/element-ui.common.js
module.exports = require("element-ui/lib/option");因此以上列出的
config.externals 属性的
key 和
value 可以排除 UI组件、支持国际化、utils方法 功能的代码。
config.externals 属性的最后一个值是
[Function] ,是由webpack-node-externals 生成的。这里解释一下
webpack-node-externals 的作用:Webpack allows you to define externals – modules that should not be bundled. When bundling with Webpack for the backend – you usually don’t want to bundle its node_modules dependencies. This library creates an externals function that ignores node_modules when bundling in Webpack.










