Env环境变量
Zova 通过process.env
暴露环境变量,这些变量在构建时会被静态的替换掉
meta与.env文件
Zova 使用dotenv从env
目录中加载下列文件中的环境变量:
txt
.env # 所有情况下都会加载
.env.mine # 所有情况下都会加载,但会被 git 忽略
.env.[meta] # 只在指定条件下加载
.env.[meta].mine # 只在指定条件下加载,但会被 git 忽略
[meta]
可以是以下三个字段值的任意组合
名称 | 类型 |
---|---|
mode | 'development' | 'production' | string; |
flavor | 'web' | 'app' | string; |
appMode | 'spa' | 'ssr' | 'pwa' | 'cordova' | 'capacitor' | 'electron' | 'bex' | string | undefined; |
mode
bash
$ npm run dev # mode is 'development'
$ npm run build # mode is 'production'
flavor
可以通过命令行传入 flavor 变量值,默认是app
bash
$ npm run [dev/build] # flavor is 'app'
$ FLAVOR=app npm run [dev/build] # flavor is 'app'
$ FLAVOR=web npm run [dev/build] # flavor is 'web'
appMode
可以通过命令行传入 appMode 变量值,默认是spa
bash
$ npm run [dev/build] # appMode is 'spa'
$ APPMODE=spa npm run [dev/build] # appMode is 'spa'
$ APPMODE=ssr npm run [dev/build] # appMode is 'ssr'
quasar
有自己的appMode
设置机制,参见:Commands List: Mode
举例
在命令行执行npm run dev
,那么,对应的 meta 变量值是:
名称 | 值 |
---|---|
mode | 'development' |
flavor | 'app' |
appMode | 'spa' |
系统就会自动加载下列文件中的环境变量,并进行合并:
txt
.env
.env.mine
.env.app
.env.app.mine
.env.app.development
.env.app.development.mine
.env.app.development.spa
.env.app.development.spa.mine
内置环境变量
为了进一步实现开箱即用的效果,Zova 提供了若干内置的环境变量:
meta
名称 | 说明 |
---|---|
META_MODE | mode |
META_FLAVOR | flavor |
META_APP_MODE | appMode |
NODE_ENV | 等于META_MODE |
开发服务
名称 | 说明 |
---|---|
DEV_SERVER_HOST | 开发服务的host Vite: server.host |
DEV_SERVER_PORT | 开发服务的port |
应用
名称 | 说明 |
---|---|
APP_ROUTER_MODE | Vue Router: History Modes |
APP_ROUTER_BASE | Vue Router: base |
APP_PUBLIC_PATH | Vite: Public Base Path |
APP_NAME | 应用名称 |
APP_TITLE | 应用标题 |
APP_VERSION | 应用版本 |
套件/模块
名称 | 说明 |
---|---|
PROJECT_DISABLED_MODULES | 禁用的模块清单 |
PROJECT_DISABLED_SUITES | 禁用的套件清单 |
API
名称 | 说明 |
---|---|
API_BASE_URL | |
API_PREFIX |
src/front/config/config/config.ts
typescript
export default function (_meta: ZovaConfigMeta) {
const config: ZovaConfigOptional = {
base: {},
api: {
baseURL: process.env.API_BASE_URL,
prefix: process.env.API_PREFIX,
},
layout: {},
};
return config;
}
src/suite/a-home/modules/home-api/src/bean/store.api.ts
typescript
export class StoreApi {
private [SymbolApi]: AxiosInstance;
protected async __init__() {
const baseURL = `${this.app.config.api.baseURL || ''}${this.app.config.api.prefix || ''}/`;
this[SymbolApi] = markRaw(axios.create({ baseURL }));
}
}
Proxy
名称 | 说明 |
---|---|
PROXY_API_ENABLED | 是否启用proxy:Vite: server.proxy |
PROXY_API_BASE_URL | proxy target |
PROXY_API_PREFIX | proxy key |
Mock
参见:Mock