如下主要操做都在文件 vue.config.js
下进行,如没有此文件,就在项目根目录下新建。css
.map
文件.map
文件的做用:项目打包后,代码都是通过压缩加密的,若是运行时报错,输出的错误信息没法准确得知是哪里的代码报错。
有了.map
就能够像未加密的代码同样,准确的输出是哪一行哪一列有错。
操做:html
module.exports = { // ... productionSourceMap: false, }
包大小:vue
此操做会压缩图片质量,选择使用
操做:webpack
npm install image-webpack-loader --save-dev
module.exports = { // ... chainWebpack: config => { // ... config.module .rule('images') .use('image-webpack-loader') .loader('image-webpack-loader') .options({ bypassOnDebug: true }) .end() }, }
包大小:web
代码中
console.log
越多,效果越明显,可选择使用。
操做:vue-router
npm install uglifyjs-webpack-plugin --save-dev
module.exports = { // ... chainWebpack: config => { if (process.env.NODE_ENV !== 'production') { config .plugin('uglifyjs-plugin') .use('uglifyjs-webpack-plugin', [{ uglifyOptions: { warnings: false, compress: { drop_console: true, drop_debugger: false, pure_funcs: ['console.log'] } } }]) .end() } } }
包大小:npm
维护上不受控制,因此只把那些不可能改动的代码或者库分离出来,经过CDN加速加载。为了不使用CDN遇到坑,建议使用可靠的CDN。json
此项选择使用。不建议使用。bash
操做:服务器
module.exports = { // ... configureWebpack: config => { if (process.env.NODE_ENV === 'production') { // 分离不经常使用资源库 config.externals = { 'vue': 'Vue', 'vue-router': 'VueRouter' } } } }
<!-- CDN示例 --> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
包大小:
gizp压缩是一种http请求优化方式,经过减小文件体积来提升加载速度,能够减少60%以上的体积。注意:这个须要服务器配合开启Gzip,也可打包时不配置,直接在服务器端进行Gzip压缩。
操做:
npm install compression-webpack-plugin --save-dev
module.exports = { // ... chainWebpack: config => { if (process.env.NODE_ENV === 'production') { config .plugin('gzip-plugin') .use('compression-webpack-plugin', [{ filename: '[path].gz[query]', algorithm: 'gzip', test: /\.js$|\.html$|\.json$|\.css$|\.ttf$/, threshold: 0, // 只有大小大于该值的资源会被处理 minRatio:0.8, // 只有压缩率小于这个值的资源才会被处理 deleteOriginalAssets: true // 删除原文件 }]) .end() } } }
包大小: