NPM,应将构建时依赖项置于开发依赖项还是依赖项下?

时间:2019-02-20 16:21:23

标签: node.js heroku npm npm-install dependency-management

我正在要在Heroku上部署的节点服务器上工作。为简单起见,我使用的是Heorku的“从主服务器自动部署”选项。每当我将更改推送到GitHub时,Heroku应用程序都会更新。

我遇到的问题是Heroku没有安装NPM dev-dependencies(可能是因为NODE_ENV设置为production?),这可能是有道理的,因为它不是开发环境

但是,构建应用程序需要一些依赖性。所以我有两个选择:

  1. 将构建所需的依赖项作为非开发依赖项。
    • 这意味着Heroku将安装这些依赖项并在构建时对其进行访问。
    • 但是,我一直认为非dev和dev依赖之间的区别是运行时所需的依赖(例如lodash实用程序库或axios http库)与构建所需的依赖(例如webpack或browserpack或scss编译器)和用于开发(例如nodemon和本地http服务器)。
  2. 将构建输出包含在github中。
    • 这意味着Heroku不需要构建,因此不需要dev依赖项。
    • 但是,包括在github中生成的内容似乎很丑。
    • 此外,建筑可能是特定于平台或环境的。

我倾向于选项(1),但我想澄清一下我对dev v非dev依赖项的理解是否正确。显然,运行时的依赖关系应该归于非开发人员,开发和调试时使用的依赖关系应归于开发人员。但是在构建过程中应该在哪里使用依赖项?

0 个答案:

没有答案