这个文档很难回答我的问题。我不明白这些解释。有人能用更简单的话说吗?如果很难选择简单的单词,可以举个例子吗?

EDIT还添加了peerDependencies,它密切相关,可能会引起混淆。


当前回答

依赖关系

这些是您的程序包需要运行的程序包,因此在人们运行时将安装这些程序包

 npm install PACKAGE-NAME

例如,如果您在项目中使用jQuery。如果有人没有安装jQuery,那么它就不会工作。要另存为依赖项,请使用

 npm install --save

开发人员依赖关系

这些是您在开发中使用的依赖项,但在人们使用时不需要,因此当人们运行npm安装时,它不会安装它们,因为它们不是必需的。例如,如果您使用mocha进行测试,人们不需要运行mocha,所以npm install不会安装它

npm install PACKAGE --save-dev

对等依赖关系

如果您想创建和发布自己的库,以便将其用作依赖项,则可以使用这些库。例如,如果您希望您的包在另一个项目中用作依赖项,那么当有人安装将您的项目作为依赖项的项目时,也会安装这些包。大多数情况下,您不会使用对等依赖关系。

其他回答

例如,mocha通常是一个devDependency,因为在生产中不需要测试,而express则是一个依赖项。

一个简单的解释让我更加清楚:

部署应用程序时,需要安装依赖项中的模块,否则应用程序将无法工作。devDependencies中的模块不需要安装在生产服务器上,因为您不是在该机器上开发的。链接

如果不想安装devDependencies,可以使用npm install--production

依赖关系与开发依赖关系

开发依赖项是仅在开发期间需要的模块,而依赖项在运行时需要。如果您正在部署应用程序,则必须安装依赖项,否则应用程序将无法正常工作。从代码中调用的使程序能够运行的库可以被视为依赖项。

例如,反应,反应域

开发依赖模块不需要安装在生产服务器上,因为您不需要在该机器上进行开发。将代码转换为javascript、测试框架和文档生成器的编译器可以被视为开发依赖,因为它们只在开发期间需要。

例如:ESLint、Babel、webpack

@FYI,

mod-a
  dev-dependents:
    - mod-b
  dependents:
    - mod-c

mod-d
  dev-dependents:
    - mod-e
  dependents:
    - mod-a

----

npm install mod-d

installed modules:
  - mod-d
  - mod-a
  - mod-c

----

checkout the mod-d code repository

npm install

installed modules:
  - mod-a
  - mod-c
  - mod-e

如果要发布到npm,那么必须为正确的模块使用正确的标志。如果npm模块需要运行,那么使用“--save”标志将模块保存为依赖项。如果您的模块不需要运行,但测试需要它,那么使用“--save-dev”标志。

# For dependent modules
npm install dependent-module --save

# For dev-dependent modules
npm install development-module --save-dev

要将包作为开发依赖项保存到package.json,请执行以下操作:

npm install "$package" --save-dev

运行npm install时,它将同时安装devDependencies和dependencies。要避免安装devDependencies,请运行:

npm install --production