feat: 完善环境标识配置
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
# develop 分支测试环境构建配置
|
||||
VITE_APP_ENV = "develop"
|
||||
VITE_APP_ENV_LABEL = "测试环境"
|
||||
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
VITE_ROUTER_HISTORY = "hash"
|
||||
|
||||
VITE_CDN = false
|
||||
|
||||
VITE_COMPRESSION = "none"
|
||||
|
||||
# 本地调试 develop mode 时的后端代理目标;线上测试环境由 Nginx 将 /api 代理到测试后端。
|
||||
VITE_API_PROXY_TARGET = "http://localhost:3501"
|
||||
@@ -1,6 +1,9 @@
|
||||
# 平台本地运行端口号
|
||||
VITE_PORT = 8848
|
||||
|
||||
VITE_APP_ENV = "local"
|
||||
VITE_APP_ENV_LABEL = "本地环境"
|
||||
|
||||
# 开发环境读取配置文件路径
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# 线上环境平台打包路径
|
||||
VITE_APP_ENV = "production"
|
||||
VITE_APP_ENV_LABEL = "生产环境"
|
||||
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
+4
-1
@@ -1,7 +1,10 @@
|
||||
# 预发布也需要生产环境的行为
|
||||
# 预发布当前按 develop/测试环境标识
|
||||
# https://cn.vitejs.dev/guide/env-and-mode.html#modes
|
||||
# NODE_ENV = development
|
||||
|
||||
VITE_APP_ENV = "develop"
|
||||
VITE_APP_ENV_LABEL = "测试环境"
|
||||
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
# 预发布环境路由历史模式(Hash模式传"hash"、HTML5模式传"h5"、Hash模式带base参数传"hash,base参数"、HTML5模式带base参数传"h5,base参数")
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# 测试环境构建配置
|
||||
VITE_APP_ENV = "develop"
|
||||
VITE_APP_ENV_LABEL = "测试环境"
|
||||
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
@@ -86,7 +86,8 @@ http://localhost:8848/
|
||||
| `pnpm dev` | 启动 Vite 开发服务,默认端口来自 `.env.development` 的 `VITE_PORT=8848` | 本地开发 |
|
||||
| `pnpm serve` | `pnpm dev` 的别名 | 兼容习惯命令 |
|
||||
| `pnpm build` | 清理 `dist` 后执行生产构建,内存上限设为 8192MB | 发布前打包 |
|
||||
| `pnpm build:test` | 使用 `test` mode 构建测试环境静态产物 | 测试环境构建 |
|
||||
| `pnpm build:develop` | 使用 `develop` mode 构建测试环境静态产物 | 测试环境构建 |
|
||||
| `pnpm build:test` | `pnpm build:develop` 的兼容命令 | 旧测试构建入口 |
|
||||
| `pnpm build:prod` | `pnpm build` 的生产构建别名 | 生产环境构建 |
|
||||
| `pnpm build:staging` | 使用 `staging` mode 构建 | 预发布环境验证 |
|
||||
| `pnpm report` | 构建并打开 Rollup 可视化分析报告 | 分析包体积 |
|
||||
@@ -118,9 +119,10 @@ http://localhost:8848/
|
||||
|
||||
## 后端对接
|
||||
|
||||
开发环境通过 Vite 代理把 `/api` 转发到 `VITE_API_PROXY_TARGET`,默认值为 `http://localhost:3500`。相关配置位于:
|
||||
开发环境通过 Vite 代理把 `/api` 转发到 `VITE_API_PROXY_TARGET`,默认值为 `http://localhost:3500`。页面右上角环境标识按 `VITE_APP_ENV=local/develop/production` 显示“本地环境”“测试环境”“生产环境”。相关配置位于:
|
||||
|
||||
- `.env.development`
|
||||
- `.env.develop`
|
||||
- `vite.config.ts`
|
||||
|
||||
当前已对接接口:
|
||||
@@ -178,10 +180,11 @@ http://localhost:8848/
|
||||
## 配置说明
|
||||
|
||||
- `.env`: 全局默认配置,目前包含端口和是否隐藏首页。
|
||||
- `.env.development`: 开发环境端口、路由模式、API 代理目标。
|
||||
- `.env.test`: 测试环境构建配置;线上测试站点的 `/api` 应由 Nginx 代理到测试后端。
|
||||
- `.env.staging`: 预发布构建配置,可开启 CDN。
|
||||
- `.env.production`: 生产构建配置。
|
||||
- `.env.development`: 本地开发环境端口、路由模式、API 代理目标,`VITE_APP_ENV=local`,页面标识为“本地环境”。
|
||||
- `.env.develop`: develop/测试环境构建配置,`VITE_APP_ENV=develop`,页面标识为“测试环境”。
|
||||
- `.env.test`: 兼容旧测试 mode 的构建配置,语义同 develop;线上测试站点的 `/api` 应由 Nginx 代理到测试后端。
|
||||
- `.env.staging`: 预发布构建配置,当前按 develop/测试环境标识,可开启 CDN。
|
||||
- `.env.production`: 生产构建配置,`VITE_APP_ENV=production`,页面标识为“生产环境”。
|
||||
- `public/platform-config.json`: pure-admin 运行时平台配置,例如标题、布局、主题、标签页和菜单搜索历史。
|
||||
|
||||
## 环境构建约定
|
||||
|
||||
+2
-1
@@ -7,7 +7,8 @@
|
||||
"dev": "NODE_OPTIONS=--max-old-space-size=4096 vite",
|
||||
"serve": "pnpm dev",
|
||||
"build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build",
|
||||
"build:test": "rimraf dist && vite build --mode test",
|
||||
"build:develop": "rimraf dist && vite build --mode develop",
|
||||
"build:test": "pnpm build:develop",
|
||||
"build:prod": "pnpm build",
|
||||
"build:staging": "rimraf dist && vite build --mode staging",
|
||||
"report": "rimraf dist && vite build",
|
||||
|
||||
+49
@@ -1,5 +1,8 @@
|
||||
<template>
|
||||
<el-config-provider :locale="currentLocale">
|
||||
<div class="environment-badge" :aria-label="`当前环境:${appEnvLabel}`">
|
||||
{{ appEnvLabel }}
|
||||
</div>
|
||||
<router-view />
|
||||
<ReDialog />
|
||||
</el-config-provider>
|
||||
@@ -17,6 +20,27 @@ export default defineComponent({
|
||||
[ElConfigProvider.name]: ElConfigProvider,
|
||||
ReDialog
|
||||
},
|
||||
data() {
|
||||
const appEnv =
|
||||
import.meta.env.VITE_APP_ENV ||
|
||||
(import.meta.env.MODE === "development"
|
||||
? "local"
|
||||
: import.meta.env.MODE === "production"
|
||||
? "production"
|
||||
: "develop");
|
||||
const defaultLabelMap = {
|
||||
local: "本地环境",
|
||||
develop: "测试环境",
|
||||
production: "生产环境"
|
||||
} as const;
|
||||
|
||||
return {
|
||||
appEnvLabel:
|
||||
import.meta.env.VITE_APP_ENV_LABEL ||
|
||||
defaultLabelMap[appEnv as keyof typeof defaultLabelMap] ||
|
||||
"本地环境"
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
currentLocale() {
|
||||
return zhCn;
|
||||
@@ -24,3 +48,28 @@ export default defineComponent({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.environment-badge {
|
||||
position: fixed;
|
||||
top: 72px;
|
||||
right: 16px;
|
||||
z-index: 1000;
|
||||
padding: 8px 10px;
|
||||
font-size: 12px;
|
||||
font-weight: 750;
|
||||
line-height: 1;
|
||||
color: #fff;
|
||||
letter-spacing: 0;
|
||||
background: rgb(20 20 24 / 86%);
|
||||
border-radius: 999px;
|
||||
box-shadow: 0 10px 24px rgb(0 0 0 / 16%);
|
||||
}
|
||||
|
||||
@media (width <= 768px) {
|
||||
.environment-badge {
|
||||
top: 16px;
|
||||
right: 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -9,8 +9,6 @@ import LaySidebarTopCollapse from "../lay-sidebar/components/SidebarTopCollapse.
|
||||
import LogoutCircleRLine from "~icons/ri/logout-circle-r-line";
|
||||
import Setting from "~icons/ri/settings-3-line";
|
||||
|
||||
const appEnvLabel = import.meta.env.VITE_APP_ENV_LABEL || "生产环境";
|
||||
|
||||
const {
|
||||
layout,
|
||||
device,
|
||||
@@ -41,9 +39,6 @@ const {
|
||||
<LayNavMix v-if="layout === 'mix'" />
|
||||
|
||||
<div v-if="layout === 'vertical'" class="vertical-header-right">
|
||||
<span class="environment-badge" :title="`当前环境:${appEnvLabel}`">
|
||||
{{ appEnvLabel }}
|
||||
</span>
|
||||
<!-- 菜单搜索 -->
|
||||
<LaySearch id="header-search" />
|
||||
<!-- 全屏 -->
|
||||
@@ -98,20 +93,6 @@ const {
|
||||
height: 48px;
|
||||
color: #000000d9;
|
||||
|
||||
.environment-badge {
|
||||
padding: 5px 9px;
|
||||
margin-right: 8px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
color: #ffffff;
|
||||
letter-spacing: 0;
|
||||
white-space: nowrap;
|
||||
background: rgb(24 24 27 / 86%);
|
||||
border-radius: 999px;
|
||||
box-shadow: 0 8px 20px rgb(0 0 0 / 14%);
|
||||
}
|
||||
|
||||
.el-dropdown-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
Vendored
+1
@@ -70,6 +70,7 @@ declare global {
|
||||
VITE_CDN: boolean;
|
||||
VITE_HIDE_HOME: string;
|
||||
VITE_COMPRESSION: ViteCompression;
|
||||
VITE_APP_ENV?: "local" | "develop" | "production";
|
||||
VITE_APP_ENV_LABEL?: string;
|
||||
VITE_API_PROXY_TARGET?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user