原由:同一套业务逻辑的代码需要根据使用的地区不同,同一个位置的显示内容会发生改变
想法:打包时根据不同的命令获取其所设置的环境参数内容
基本信息
备注:默认情况下模式都会被覆盖掉,可以使用--mode
改写(文档)
json
-- package.json --
"build": vite build // 一般情况下打包正式环境的命令 => vite build -- mode production
其对应的环境是production
生产环境,对应的配置文件名称为.env.production
例子:以创建中国地区内容为例
- 根目录下创建配置文件为
.env.production.china
package.json
补充打包命令
json
-- package.json --
"build": vite build // 一般情况下打包正式环境的命令 == vite build -- mode production
+ "build:china": vite build --mode production.china
- 编写配置文件内容
为了防止意外地将一些环境变量泄漏到客户端,只有以 VITE_
为前缀的变量才会暴露给经过 vite 处理的代码
javascript
-- .env.production.china --
VITE_APP_TITLE=中国地区
VITE_PHONE=86-123456789
javascript
-- .env.production --
VITE_APP_TITLE=海外地区
VITE_PHONE=xx-123456789
使用一、html文件的title设置
- 安装插件
cmd
npm i vite-plugin-html
- 在配置文件中设置
javascript
-- vite.config.js --
import { defineConfig, loadEnv } from 'vite';
// 引入插件
import { createHtmlPlugin } from 'vite-plugin-html'
export default defineConfig(({ command, mode }) => ({
plugins: [
createHtmlPlugin({
inject: {
data: {
// 设置标题
title: loadEnv(mode, process.cwd())[VITE_APP_TITLE]
}
}
})
],
}))
index.html
中使用
html
<title><%- title %></title>
使用二、单页面应用中设置
vue
<template>
{{ phone }}
</template>
<script setup>
import { computed } from 'vue';
const envConfig = import.meta.env;
const phone = computed(() => envConfig.VITE_PHONE)
</script>
打包
对应的环境就运行对应环境的命令即可
参考链接
- 官网(环境变量与模式):www.vitejs.net/guide/env-a...