Vue 配置使用 externals 使用cdn减小打包体积
在 vue.config.js 中 书写配置
const webpack = require('webpack');
const path = require('path');
const assetsCDN = {
externals:{
vue: 'Vue',
'element-plus': 'ElementPlus',
},
css:[
'//unpkg.com/element-plus@1.0.2-beta.48/lib/theme-chalk/index.css',
],
js:[
'//unpkg.com/vue@3.1.1/dist/vue.global.js',
'//unpkg.com/element-plus@1.0.2-beta.48/lib/index.full.js'
]
}
module.exports = {
configureWebpack: config => {
config.externals = assetsCDN.externals;
},
chainWebpack: config => {
config.plugin('html')
.tap(args => {
args[0].cdn = assetsCDN;
return args
})
}
}
在入口文件中书写配置 (一般是 public/index.html )
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
<% } %>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script type="text/javascript" src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>
</body>
</html>
vue3
自动配置了 全局 API Treeshaking
通过这一更改,如果模块打包工具支持 tree-shake
,则 Vue
应用程序中未使用的全局 API 将从最终的打包产物中排除,从而获得最佳的文件大小。element-plus
也支持按需引入,建议使用按需引入(我这里测试使用,所以全部引入了),可以更加减少打包后体积大小。同时也可以使 cdn 引用文件 变小,加载速度更快