前言
node应用根据环境不同,会有不同的部署参数、环境变量等。以下是个人觉得比较合理的方案。
依赖
开发环境依赖nodemon,其他环境依赖pm2。
nodemon
用来监视node应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。
npm i -g nodemon
pm2
是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,是和生产环境。
npm i -g pm2
思路
开发环境使用nodemon监听应用变化,结合cross-env设置环境变量。 其他环境使用pm2,结合pm2配置文件来设置环境变量
开发环境
"scripts": {
"dev": "cross-env NODE_ENV=development PORT=9539 nodemon ./app.js"
},
其他环境
- ecosystem.config.js pm2配置文件
- —env 指定读取配置文件中的哪套env
"scripts": {
"test": "pm2 start ecosystem.config.js --env production",
"pre": "pm2 start ecosystem.config.js --env pre",
"prod": "pm2 start ecosystem.config.js --env prod",
},
pm2.config.js
```javascript module.exports = { apps: [ {
}, ], };name: 'sand',
// 项目启动入口文件
script: './app.js',
// 监听
watch: true,
// 启用多少个实例
instances: 1,
// 项目环境变量
exec_mode: 'cluster',
// 默认
env: {
NODE_ENV: 'development',
PORT: 9539,
},
// development
env_development: {
NODE_ENV: 'development',
PORT: 9539,
},
// test
env_test: {
NODE_ENV: 'test',
PORT: 9539,
},
// pre
env_pre: {
NODE_ENV: 'pre',
PORT: 9539,
},
// production
env_production: {
NODE_ENV: 'production',
PORT: 9539,
},
```