vue打包体积优化

一、webpack-bundle-analyzer工具

1、安装

终端运行命令,根据包管理器自行选择命令

1
2
3
4
5
#npm
npm install --save-dev webpack-bundle-analyzer
 
#yarn
yard add -D webpack-bundle-analyzer

  

2、代码引入

将代码引入到vue.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
 
module.exports={
    configureWebpack:{
        plugins:[
            new BundleAnalyzerPlugin()
        ]
    },
    publicPath:process.env.NODE_ENV === "production" ? "/":"/",
    devServer:{
        host:'localhost',
        port:port,
        open:true,
    },
     
}

  

3、命令

引入完成执行 npm run build --report 命令,命令执行完会自动打开浏览器页面,如图:

start:打包之前输出文件大小

prased:打包之后输出文件大小

gizppen:开启gzip压缩后输出文件大小

 

4、减小打包体积,删除多余包

1
2
3
4
5
#删除多余包
npm uninstall [包名]
 
#例
npm uninstall tinymce

  

5、常见问题

报错: npm error:Maximum call stack size exceeded

删除 node_module,执行命令:npm cache clean --force , npm install ,在执行命令前可以把package.json中的tinymce删除。

 

二、babel-plugin-component工具

1、安装

终端运行命令

1
2
#npm
npm install babel-plugin-component -D

 

2、代码引入

将代码引入到babel.config.js,以ElementUi 为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
module.exports = {
    presets: [
        ["@babel/preset-env", { "modules": false }]
    ],
    "plugins": [
        [
            "component",
            {
                "libraryName": "element-ui",
                "styleLibraryName": "theme-chalk"
            }
        ]
    ]
}

  

3、命令

执行打包命令,查看体积 npm run build --report

 

三、compression-webpack-plugin工具(gzip压缩代码)

1、安装

终端运行命令

1
2
#npm
npm install compression-webpack-plugin -D

  

2、代码引入

将代码引入到vue.config.js

1
2
3
4
5
6
7
8
9
const CompressionWebpackPlugin = require('compression-webpack-plugin')module.exports = {  chainWebpack: config => {
     // 对超过10kb的文件gzip压缩
      config.plugin('compressionPlugin').use(
         new CompressionWebpackPlugin({
            test: /\.(js|css|html)$/,// 匹配文件名
            threshold: 10240,
         })
      )
  }<br>}

  

3、命令

执行打包命令,查看打包文件,npm run build,产生压缩文件既开启成功

 

4、nginx配置

服务端开启gzip功能,加入代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server{
    //开启和关闭gzip模式
    gzip on;
    //gizp压缩起点,文件大于2k才进行压缩;设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。 默认值是0,不管页面多大都压缩。建议设置成大于2k的字节数,小于2k可能会越压越大。
    gzip_min_length 2k;
    // 设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区
    gzip_buffers 4 16k;
    // 设置gzip压缩针对的HTTP协议版本
    gzip_http_version 1.0;
    // gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
    gzip_comp_level 2;
    //进行压缩的文件类型
    gzip_types text/plain application/javascript text/css application/xml;
    // 是否在http header中添加Vary: Accept-Encoding,建议开启
    gzip_vary on;
}

  

5、发布资源,检测gzip是否开启成功

可借用工具检测:链接

6、常见问题

报错:Cannot read property ‘tapPromise’ of undefined ,compression-webpack-plugin版本问题,不可以使用最新版本,需指定版本下载

1
2
3
4
5
#先执行卸载命令
npm uninstall compression-webpack-plugin
 
#执行安装命令
npm i compression-webpack-plugin@6.1.1

  

四、清除console日志

1、安装

终端运行命令

1
2
#npm
npm install babel-plugin-transform-remove-console --save-dev

  

2、代码引入

将代码引入到babel.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 这是项目发布阶段需要用到的bebel插件
const prodPlugins = []
// 如果是发布阶段,处于生产环境,就向prodPlugins数组里添加一个插件
if (process.env.NODE_ENV === 'production') {
  prodPlugins.push('transform-remove-console')
}
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins: [
    ...prodPlugins // 这里...展开运算符,把上面定义的prodPlugins数组里面的每一项展开添加到这个plugins数组里面
  ]
}

  

posted @   北漂生活  阅读(646)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示