Skip to content

Commit

Permalink
docs: Update env.md (#918)
Browse files Browse the repository at this point in the history
  • Loading branch information
m31271n authored and popomore committed May 17, 2017
1 parent b3825f3 commit 9bf3a65
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions docs/source/zh-cn/basics/env.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
title: 运行环境
---

一个 Web 应用在流程的各个阶段可能存在各种差异,而应用本身应该是无状态的,所以提供环境变量可以让应用不感知差异,只需要定义不同的配置
一个 Web 应用本身应该是无状态的,并拥有根据运行环境设置自身的能力

框架提供了 `env` 这个变量来决定此次的运行环境,可以通过这个来决定使用哪些配置,或直接判断。
## 指定运行环境

## 如何指定环境
框架有两种方式指定运行环境:

框架有多种方式指定环境变量
1. 通过 `config/env` 文件指定,该文件的内容就是运行环境,如 `prod`。一般通过构建工具来生成这个文件。
2. 通过 `EGG_SERVER_ENV` 环境变量指定。

1.`config/env` 文件指定,一般通过构建工具来生成这个文件,该文件的内容就是环境变量的值,如 `prod`
1. 通过 `EGG_SERVER_ENV` 环境变量指定。

`EGG_SERVER_ENV` 会比较常用,在应用启动的时候指定是最简单的方式,比如在生产环境启动应用。
其中,方式 2 比较常用,因为通过 `EGG_SERVER_ENV` 环境变量指定运行环境更加方便,比如在生产环境启动应用:

```shell
EGG_SERVER_ENV=prod npm start
```

## 如何使用
## 应用内获取运行环境

框架提供了变量 `app.config.env` 来表示应用当前的运行环境。

可以通过 `app.config.env` 来获取这个环境变量直接判断环境。
## 运行环境相关配置

也可以通过环境加载不同的配置,比如增加 `config/config.{env}.js` 这样的配置,可以在指定环境加载指定配置,具体看 [Config 配置](./config.md)
不同的运行环境会对应不同的配置,具体请阅读 [Config 配置](./config.md)

## 与 NODE_ENV 的区别

很多 Node.js 应用会使用 `NODE_ENV` 来区分环境,但 `EGG_SERVER_ENV` 会区分的更加精细。一般的项目开发流程包括本地开发环境、测试环境、生产环境,除了本地开发环境和单元测试环境外都为**服务器环境**该环境的 `NODE_ENV` 都应该为 `production`。而且 npm 也会使用这个变量,在应用部署的时候一般不会安装 devDependencies,所以这个值也应该为 `production`
很多 Node.js 应用会使用 `NODE_ENV` 来区分运行环境,但 `EGG_SERVER_ENV` 区分得更加精细。一般的项目开发流程包括本地开发环境、测试环境、生产环境等,除了本地开发环境和测试环境外,其他环境可统称为**服务器环境**服务器环境的 `NODE_ENV` 应该为 `production`。而且 npm 也会使用这个变量,在应用部署的时候一般不会安装 devDependencies,所以这个值也应该为 `production`

框架默认支持的环境及映射关系(如果未指定 `EGG_SERVER_ENV` 会根据 `NODE_ENV` 来匹配)
框架默认支持的运行环境及映射关系(如果未指定 `EGG_SERVER_ENV` 会根据 `NODE_ENV` 来匹配)

| NODE_ENV | EGG_SERVER_ENV | 说明 |
| ---------- | -------------- | ------------ |
Expand All @@ -40,9 +40,9 @@ EGG_SERVER_ENV=prod npm start

## 自定义环境

常规研发流程不仅仅只有以上几种环境,所以可以通过自定义环境来支持自己的研发流程,比如增加集成测试环境 SIT
常规开发流程可能不仅仅只有以上几种环境,Egg 支持自定义环境来适应自己的开发流程

`EGG_SERVER_ENV` 设置成 `sit`(并建议设置 `NODE_ENV = production`),启动时会加载 `config/config.sit.js`,运行环境变量 `app.config.env` 会被设置成 `sit`
比如,要为开发流程增加集成测试环境 SIT。`EGG_SERVER_ENV` 设置成 `sit`(并建议设置 `NODE_ENV = production`),启动时会加载 `config/config.sit.js`,运行环境变量 `app.config.env` 会被设置成 `sit`

## 与 Koa 的区别

Expand Down

0 comments on commit 9bf3a65

Please sign in to comment.