vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue3+Vite打包配置,

Vue3+Vite打包配置全过程(包括分包配置)

作者:Z兽兽

文章主要介绍了在vite.config.ts文件中配置环境变量、代码压缩及分包策略的方法,通过配置output.manualChunks,项目打包后会将第三方包和业务代码分开,更新业务代码时只需更新index.js,从而利用缓存提升加载速度

vite.config.ts文件中配置环境变量

1. 基本配置说明

import { defineConfig } from 'vite'
//配置组件路径别名需引入resolve
import{ resolve } from 'path'
 
export default defineConfig({
  //配置根路径,解决部署到服务器之后绝对路径会报404问题,所以需改为相对路径
  base:"./",

  server: {
    open: true,  //自动打开浏览器
    proxy: {
      // 字符串简写写法,其他方法可看vite官网,使用方法与webpack解决跨域一样
      '/foo': 'baseURL地址',
    }
  },

  // 路径别名
  resolve: {
    dedupe: ['vue'],
	alias: [{
      find: '@',
	  replacement: resolve(__dirname, 'source')
	}]
  },

  // 生产环境移除console.log的配置
  build:{
    // 默认是esbuild,但这里需要改成terser,并且想使用terser的话,需提前安装,命令为npm add -D terser                     
    minify:"terser",
    outDir: "dist",
    terserOptions: {
      compress: {
        //生产环境时移除console
        drop_console: true,
        drop_debugger: true,
      },
      format: {
		comments: false,      // 删除注释
	  }
    },
  },
  plugins: [],
})

2. 代码压缩

//下载包
npm i vite-plugin-compression -D
//在vite.config.ts中
import viteCompression from 'vite-plugin-compression'


//在plugins中配置即可
plugins: [
  viteCompression({ verbose: true, disable: false, threshold: 10240, algorithm: 'gzip', ext: '.gz' }), 
]

3. 分包策略 使用output.manualChunks

build: {
	rollupOptions: {
		output: {
            //1) 使用函数方式
			manualChunks: (id:any) => {
				if (id.includes('node_modules')) {
					if (id.includes('element-plus')) return 'element-plus';
					else if (id.includes('lodash')) return 'lodash';
				}
			},
            //2) 使用键值对的方式
            manualChunks: {
                'element': ['element-plus']
            }

            //打包后的文件命名格式
			entryFileNames: `js/[name].[hash].js`,
			chunkFileNames: `js/[name].[hash].js`,
			assetFileNames: `static/[ext]/[hash].[ext]`
		}
	}
},

以下是我自己的项目打包后的dist包详情,引入的第三方包都各自拆分为包,业务代码在index.js中。

这样以后再有业务更新时 只需要更新index,不需要更新第三方包,可以读取缓存,提升加载速度

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文