Heroku - 在开发或生产中部署

Heroku - Deploy in Dev or Production

我有一个 express API,我在 Heroku 上托管。我创建了两个项目:一个项目指向我的 Master 分支 (Prod),另一个指向我的 Development 分支 (Dev)。

我的包中有两个脚本 JSON:

  "scripts": {
    "devStart": "export NODE_ENV=development && nodemon server.js",
    "start": "export NODE_ENV=production && node server.js"
  }

如何才能让开发分支运行“DevStart”而Master运行“start”。目前 Prod 工作正常,因为 node start 是默认脚本。

我知道我可以在我的 procfile 中放置命令,但是由于 Dev 和 Prod 使用相同的代码库,我需要在每次提交时更改它。有动态的方法来做到这一点吗?

好的,这可能不是正确的方法,但我是这样做的。

我看到您可以使用终端为 Heroku 应用程序设置 NODE_ENV 变量:

heroku config:set NODE_ENV=development --app {app-name}

我的包 JSON 虽然在部署应用程序时覆盖了它。

  "scripts": {
    "devStart": "export NODE_ENV=development && nodemon server.js",
    "start": "export NODE_ENV=production && node server.js"
  },

我改成了:

  "scripts": {
    "localStart": "export NODE_ENV=development && nodemon server.js",
    "start": "node server.js"
  },

这现在解决了问题。无需 Procfile 或在 Heroku 中设置环境变量。

在 Heroku 上我有两个应用程序,一个用于生产,我不更改 NODE_ENV 变量,因为它默认为生产,另一个用于开发,我确实更改了 NODE_ENV 变量至 'Development'.

每个应用程序都连接到同一代码库中的不同分支(开发(开发)和大师(生产))。对任一分支的任何部署都将导致使用每个分支的正确 NODE_ENV 变量进行重建。