需求:

此vu3项目使用vite进行构建,项目分为四个环境:本地、测试、预发、生产

除本地环境外,每次都需要将vue项目打包,默认 都是 dist文件,需要根据不同的环境生成不同的文件名。

实现:

  • 项目根目录创建四个文件夹,

    .env.development .env.test .env.pre .env.production

    配置不同环境的 地址和打包文件名
    在这里插入图片描述

​ 具体配置如下:

(.env.development 文件)

# 本地环境接口地址(这里是使用了代理,解决跨域问题)

VITE_API_URL = /newapi
# 业务中台本地环境接口地址
# VITE_API_URL = /allapi

# 打包文件名
VITE_APP_NAME = 'dist_dev'

(.env.test 文件)

# 测试环境
VITE_ENV = test

# 测试环境接口地址
VITE_API_URL = 'http://192.168.255.211:31014'

# 打包文件名
VITE_APP_NAME = 'dist_test'
  • package.json 配置打包命名
"scripts": {
		"dev": "vite --mode development",
		"test": "vite --mode test",
		"pre": "vite --mode pre",
		"prod": "vite --mode production",
		"build:dev": "vite build --mode development",
		"build:prod": "vite build --mode production",
		"build:pre": "vite build --mode pre",
		"build:test": "vite build --mode test ",
		"preview": "vite preview"
	},
  • vite.config.js 进行 vite 的相关配置(全部)

    文件名相关的配置时注释的地方加星号

import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import vueSetupExtend from 'vite-plugin-vue-setup-extend';
import { resolve } from 'path';
import { defineConfig, loadEnv } from 'vite';

const pathResolve = (dir) => {
	return resolve(__dirname, '.', dir);
};

const alias = {
	'/@': pathResolve('./src/'),
};

const viteConfig = defineConfig(({ mode }) => {
	const env = loadEnv(mode, process.cwd());
	// ****打包文件名称****
	let fileName = 'dist'
	// 兼容性,以防打包崩溃
	fileName = env.VITE_APP_NAME
	return {
		plugins: [
			vue(),
			vueSetupExtend(),
			AutoImport({
				imports: ['vue', 'vue-router'],
			}),
		],
		define: {
			'process.env': {}
		},
		root: process.cwd(),
		assetsInclude: '**/*.xlsx',
		// outputDir: fileName,
		resolve: { alias },
		base: env.VITE_ENV === 'production' ? './' : './',
		server: {
			host: '0.0.0.0',
			port: 8888,
			open: false,
			proxy: {
				'/newapi': {
					target: 'http://192.168.255.215:9901',
					changeOrigin: true,
					rewrite: path => path.replace(/^\/newapi/, '')
				},
				'/allapi': {
					target: 'http://192.168.9.143:8076',
					changeOrigin: true,
					rewrite: path => path.replace(/^\/allapi/, '')
				}
			},
		},
		css: { preprocessorOptions: { css: { charset: false } } },
        //****这里进行设置文件名****
		build: {
			outDir: fileName,
			assetsPublicPath: './'
		}
	};
});

export default viteConfig;
Logo

前往低代码交流专区

更多推荐