前言

node应用根据环境不同,会有不同的部署参数、环境变量等。以下是个人觉得比较合理的方案。

依赖

开发环境依赖nodemon,其他环境依赖pm2。

nodemon

用来监视node应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。

  1. npm i -g nodemon

pm2

是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,是和生产环境。

  1. npm i -g pm2

思路

开发环境使用nodemon监听应用变化,结合cross-env设置环境变量。 其他环境使用pm2,结合pm2配置文件来设置环境变量

开发环境

  1. "scripts": {
  2. "dev": "cross-env NODE_ENV=development PORT=9539 nodemon ./app.js"
  3. },

其他环境

  • ecosystem.config.js pm2配置文件
  • —env 指定读取配置文件中的哪套env
    1. "scripts": {
    2. "test": "pm2 start ecosystem.config.js --env production",
    3. "pre": "pm2 start ecosystem.config.js --env pre",
    4. "prod": "pm2 start ecosystem.config.js --env prod",
    5. },

    pm2.config.js

    ```javascript module.exports = { apps: [ {
    1. name: 'sand',
    2. // 项目启动入口文件
    3. script: './app.js',
    4. // 监听
    5. watch: true,
    6. // 启用多少个实例
    7. instances: 1,
    8. // 项目环境变量
    9. exec_mode: 'cluster',
    10. // 默认
    11. env: {
    12. NODE_ENV: 'development',
    13. PORT: 9539,
    14. },
    15. // development
    16. env_development: {
    17. NODE_ENV: 'development',
    18. PORT: 9539,
    19. },
    20. // test
    21. env_test: {
    22. NODE_ENV: 'test',
    23. PORT: 9539,
    24. },
    25. // pre
    26. env_pre: {
    27. NODE_ENV: 'pre',
    28. PORT: 9539,
    29. },
    30. // production
    31. env_production: {
    32. NODE_ENV: 'production',
    33. PORT: 9539,
    34. },
    }, ], };

```