fes.js/docs/guide/env.md
qlin 7b80eff8c1 docs: 切换使用vitepress (#192)
* sdf

* docs: 优化文档

* fix: webpack 编译失败问题

---------

Co-authored-by: wanchun <445436867@qq.com>
2023-04-24 14:41:41 +08:00

168 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 环境变量
在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。
## 配置环境变量
### 命令行添加
比如:
```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