mirror of
https://github.com/sunniejs/vue-h5-template.git
synced 2025-04-06 03:57:50 +08:00
85 lines
2.4 KiB
Markdown
85 lines
2.4 KiB
Markdown
# 配置多环境变量
|
|
|
|
`package.json` 里的 `scripts` 配置 `serve` `stage` `build`,通过 `--mode xxx` 来执行不同环境
|
|
|
|
- 通过 `npm run serve` 启动本地 , 执行 `development`
|
|
- 通过 `npm run stage` 打包测试 , 执行 `staging`
|
|
- 通过 `npm run build` 打包正式 , 执行 `production`
|
|
|
|
```javascript
|
|
"scripts": {
|
|
"serve": "vue-cli-service serve --open",
|
|
"stage": "vue-cli-service build --mode staging",
|
|
"build": "vue-cli-service build",
|
|
}
|
|
```
|
|
|
|
##### 配置介绍
|
|
|
|
  以 `VUE_APP_` 开头的变量,在代码中可以通过 `process.env.VUE_APP_` 访问。
|
|
  比如:`VUE_APP_ENV = 'development'` 通过 `process.env.VUE_APP_ENV` 访问。
|
|
  当然,除了 `VUE_APP_*` 变量之外,在你的应用代码中始终可用的还有两个特殊的变量`NODE_ENV` 和`BASE_URL`
|
|
|
|
在项目根目录中新建`.env.*`
|
|
|
|
- .env.development 本地开发环境配置
|
|
|
|
```bash
|
|
NODE_ENV='development'
|
|
# must start with VUE_APP_
|
|
VUE_APP_ENV = 'development'
|
|
|
|
```
|
|
|
|
- .env.staging 测试环境配置
|
|
|
|
```bash
|
|
NODE_ENV='production'
|
|
# must start with VUE_APP_
|
|
VUE_APP_ENV = 'staging'
|
|
```
|
|
|
|
- .env.production 正式环境配置
|
|
|
|
```bash
|
|
NODE_ENV='production'
|
|
# must start with VUE_APP_
|
|
VUE_APP_ENV = 'production'
|
|
```
|
|
|
|
这里我们并没有定义很多变量,只定义了基础的 VUE_APP_ENV `development` `staging` `production`
|
|
变量我们统一在 `src/config/env.*.js` 里进行管理。
|
|
|
|
这里有个问题,既然这里有了根据不同环境设置变量的文件,为什么还要去 config 下新建三个对应的文件呢?
|
|
**修改起来方便,不需
|
|
要重启项目,符合开发习惯。**
|
|
|
|
config/index.js
|
|
|
|
```javascript
|
|
// 根据环境引入不同配置 process.env.NODE_ENV
|
|
const config = require("./env." + process.env.VUE_APP_ENV);
|
|
module.exports = config;
|
|
```
|
|
|
|
配置对应环境的变量,拿本地环境文件 `env.development.js` 举例,用户可以根据需求修改
|
|
|
|
```javascript
|
|
// 本地环境配置
|
|
module.exports = {
|
|
title: "vue-h5-template",
|
|
baseUrl: "http://localhost:9018", // 项目地址
|
|
baseApi: "https://test.xxx.com/api", // 本地api请求地址
|
|
APPID: "xxx",
|
|
APPSECRET: "xxx",
|
|
};
|
|
```
|
|
|
|
根据环境不同,变量就会不同了
|
|
|
|
```javascript
|
|
// 根据环境不同引入不同baseApi地址
|
|
import { baseApi } from "@/config";
|
|
console.log(baseApi);
|
|
```
|