提问
我们是否需要把第三方的库全部打包到自己的项目中呢?
不需要!
xlsx这个包就很大(715K),而且这类插件长期不需要我们进行更新,所以没有必要打包进来!
思路
- 打包时,不要把这些包打进来
- 从网络上引入这些包
webpack配置排除打包-打包瘦身
目标
通过配置vue-cli把一些平常不需要用的包排除在打包文件之外。
例如:让 webpack 不打包 vue xlsx 和 element
使用方式
先找到 vue.config.js, 添加 externals 项,具体如下:
configureWebpack: {
// 配置单页应用程序的页面的标题
// 省略其他....
externals: {
/**
* externals 对象属性解析。
* 基本格式:
* '包名' : '在项目中引入的名字'
*
*/
'vue': 'Vue',
'element-ui': 'ElementUI',
'xlsx': 'XLSX'
},
resolve: {
alias: {
'@': resolve('src')
}
}
}
复制代码
再次运行打包,我们会发现包的体积已经大幅减小:上面的三个包已经不在打包的目标文件中了。
webpack配置排除打包-引用网络资源
目标
做相关配置:通过公共网络资源方式把除在外的包引入在index.html
具体配置-在生产环境时生效
注意,在开发项目时,文件资源还是可以从本地node_modules中取出,而只有项目上线了,才需要去使用外部资源。此时我们可以使用环境变量来进行区分。具体如下:
在**vue.config.js**文件中:
let externals = {}
let cdn = { css: [], js: [] }
const isProduction = process.env.NODE_ENV === 'production' // 判断是否是生产环境
if (isProduction) {
externals = {
/**
* externals 对象属性解析:
* '包名' : '在项目中引入的名字'
*/
'vue': 'Vue',
'element-ui': 'ELEMENT',
'xlsx': 'XLSX'
}
cdn = {
css: [
'https://unpkg.com/element-ui/lib/theme-chalk/index.css' // element-ui css 样式表
],
js: [
// vue must at first!
'https://unpkg.com/vue@2.6.12/dist/vue.js', // vuejs
'https://unpkg.com/element-ui/lib/index.js', // element-ui js
'https://cdn.jsdelivr.net/npm/xlsx@0.16.6/dist/xlsx.full.min.js', // xlsx
]
}
}
作者:佑子呀
链接:juejin.cn/post/702594…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。