一、什么是 开发环境、测试环境、生产环境、UAT环境、仿真环境
- 开发环境( DEV / development ):
开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。
- 测试环境( UAT / User Acceptance Test ):
一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。
- 生产环境( PROD / production ):
是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户的个性化需求来做调整或者修改。
三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。
UAT环境:UAT,(User Acceptance Test),用户接受度测试 即验收测试,所以UAT环境主要是用来作为客户体验的环境。
仿真环境:顾名思义是和真正使用的环境一样的环境(即已经出售给客户的系统所在环境,也成为商用环境),所有的配置,页面展示等都应该和商家正在使用的一样,差别只在环境的性能方面。
二、pm2 和 node 按环境启动
{
"scripts": {
"node dev": "NODE_ENV=development node ./bin/www",
"node prod": "NODE_ENV=production node ./bin/www",
"node uat": "NODE_ENV=uat node ./bin/www"
}
}
{
"scripts": {
"pm2 dev": "NODE_ENV=development pm2 start ./bin/www",
"pm2 prod": "NODE_ENV=production pm2 start ./bin/www",
"pm2 uat": "NODE_ENV=uat pm2 start ./bin/www"
}
}
代码中可获取当前环境:
const env = process.env.NODE_ENV|'development'
const isDev = env === 'development'
const isProd = env === 'production'
三、window / mac 环境兼容 : cross-env
上面的代码在window / mac 环境中并不兼容, windows不支持NODE_ENV=development的这样的设置方式,所以需要引入cross-env库实现兼容:
cross-env就是运行跨平台设置和使用环境变量的脚本。
安装
npm install cross-env --save-dev
//或
npm install -s cross-env
//或
yarn add cross-env --dev
配置
{
"scripts": {
"pm2 dev": "cross-env NODE_ENV=development pm2 start ./bin/www",
"pm2 prod": "cross-env NODE_ENV=production pm2 start ./bin/www",
"pm2 uat": "cross-env NODE_ENV=uat pm2 start ./bin/www",
"node dev": "cross-env NODE_ENV=development node ./bin/www",
"node prod": "cross-env NODE_ENV=production node ./bin/www",
"node uat": "cross-env NODE_ENV=uat node ./bin/www"
}
}
四、dotenv : 支持.env
可将环境变量从.env文件加载到process.env中。
安装:
# with npm
npm install dotenv
# or with Yarn
yarn add dotenv
启动文件添加:
require("dotenv").config();
定义变量:
NODE_ENV=default
CUSTOM_NAME=我是默认
使用:
let env = process.env.NODE_ENV || 'development';
五、dotenv-safe : 支持.env
dotenv-safe是dotenv模块的扩展,从.env(不提交git)加载本地环境变量,并确保它们都存在。通过配置.env.example(提交git)文件来制定哪些变量必须要配置。
npm install --save dotenv-safe
# 或
yarn add dotenv-safe