mirror of
https://github.com/WeBankFinTech/fes.js.git
synced 2025-04-06 03:59:53 +08:00
* sdf * docs: 优化文档 * fix: webpack 编译失败问题 --------- Co-authored-by: wanchun <445436867@qq.com>
168 lines
3.0 KiB
Markdown
168 lines
3.0 KiB
Markdown
# 环境变量
|
||
|
||
在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。
|
||
|
||
## 配置环境变量
|
||
|
||
### 命令行添加
|
||
|
||
比如:
|
||
|
||
```bash
|
||
# OS X, Linux
|
||
PORT=3000 fes dev
|
||
|
||
# Windows (cmd.exe)
|
||
set PORT=3000 && fes dev
|
||
```
|
||
|
||
如果要同时考虑 OS X 和 Windows,可借助三方工具 [cross-env](https://github.com/kentcdodds/cross-env)
|
||
|
||
::: code-group
|
||
|
||
```sh [pnpm]
|
||
pnpm add cross-env --dev
|
||
cross-env PORT=3000 fes dev
|
||
```
|
||
|
||
```sh [npm]
|
||
npm i cross-env --save-dev
|
||
cross-env PORT=3000 fes dev
|
||
```
|
||
|
||
:::
|
||
|
||
### `.env` 文件配置
|
||
|
||
Fes.js 中约定根目录下以 `.env` 开头的文件为环境变量配置文件。
|
||
|
||
比如:
|
||
|
||
```bash
|
||
PORT=3000
|
||
```
|
||
|
||
然后执行
|
||
|
||
```bash
|
||
fes dev
|
||
```
|
||
|
||
会以 3000 端口启动 dev server。
|
||
|
||
#### 本地临时配置
|
||
|
||
可以新建 `.env.local`,这份配置会和 `.env` 做合并后形成最终配置。
|
||
|
||
#### 环境配置
|
||
|
||
可以通过环境变量 `FES_ENV` 区分不同环境来指定配置,这时候必须在执行命令前添加 `FES_ENV` 保证执行加载环境变量配置文件逻辑前 `FES_ENV` 已设置。
|
||
|
||
举个 🌰 :
|
||
|
||
```bash
|
||
FES_ENV=sit fes dev
|
||
```
|
||
|
||
如果存在 `.env.sit` 文件,则会将 `.env.sit` 的配置和 `.env` 做合并后形成最终配置。
|
||
|
||
#### 配置优先级
|
||
|
||
本地临时配置 > 环境配置 > 基础配置
|
||
|
||
::: tip
|
||
如果多份配置中存在相同的配置项,**则优先级高的会覆盖优先级低的**。
|
||
:::
|
||
|
||
## 编译时配置列表
|
||
|
||
编译时配置是在构建过程需要的变量,开放给用户配置。
|
||
|
||
### FES_ENV
|
||
|
||
指定当前的环境,不同环境各自的配置文件。
|
||
::: tip
|
||
`FES_ENV` 在会在加载`.env`前使用,所以只能用命令行方式配置。
|
||
:::
|
||
|
||
### FES_PRESETS
|
||
|
||
添加额外的插件集入口
|
||
|
||
### FES_PLUGINS
|
||
|
||
添加额外的插件入口
|
||
|
||
### PORT
|
||
|
||
`fes dev` 时服务指定的端口号,默认是 `8000`
|
||
|
||
### HOST
|
||
|
||
默认是 `localhost`。
|
||
|
||
### HTTPS
|
||
|
||
默认是 `false`。
|
||
|
||
### WATCH
|
||
|
||
设为 none 时不监听文件变更。比如:
|
||
|
||
```
|
||
WATCH=none fes dev
|
||
```
|
||
|
||
### BABEL_CACHE
|
||
|
||
默认开启 Babel 编译缓存,值为 none 时禁用缓存。
|
||
|
||
### ANALYZE
|
||
|
||
用于分析 bundle 构成,默认关闭。
|
||
|
||
比如:
|
||
|
||
```
|
||
ANALYZE=1 fes build
|
||
```
|
||
|
||
### ANALYZE_MODE
|
||
|
||
默认是`server`
|
||
|
||
### ANALYZE_PORT
|
||
|
||
默认是`8888`
|
||
|
||
### CLEAR_OUTPUT
|
||
|
||
仅仅在 `build` 时生效。如果设置为 `none`,就不会在构建前清除 `Output` 文件内容。
|
||
|
||
### RM_TMPDIR
|
||
|
||
仅仅在 `build` 时生效。如果设置为 `none`,就不会在构建后清除 `.fes` 临时文件内容。
|
||
|
||
## process.env
|
||
|
||
运行时配置需要以 `FES_APP_` 开头,比如在 `.env` 中配置:
|
||
|
||
```
|
||
FES_APP_KEY=123456789
|
||
```
|
||
|
||
在代码中使用:
|
||
|
||
```js
|
||
console.log(process.env.FES_APP_KEY);
|
||
// 输出 123456789
|
||
```
|
||
|
||
除了用户自定义的以`FES_APP_`开头的变量,还提供如下配置:
|
||
|
||
- **NODE_ENV**:Node 环境变量
|
||
|
||
- **FES_ENV**:Fes.js 环境变量
|
||
|
||
- **BASE_URL**:等同于 publicPath
|