这个文档很难回答我的问题。我不明白这些解释。有人能用更简单的话说吗?如果很难选择简单的单词,可以举个例子吗?
EDIT还添加了peerDependencies,它密切相关,可能会引起混淆。
这个文档很难回答我的问题。我不明白这些解释。有人能用更简单的话说吗?如果很难选择简单的单词,可以举个例子吗?
EDIT还添加了peerDependencies,它密切相关,可能会引起混淆。
当前回答
有些模块和软件包仅用于开发,而在生产中不需要。就像文档中所说的:
如果有人计划在他们的程序中下载并使用您的模块,那么他们可能不想或不需要下载并构建您使用的外部测试或文档框架。在这种情况下,最好在devDependencies散列中列出这些附加项。
其他回答
一个简单的解释让我更加清楚:
部署应用程序时,需要安装依赖项中的模块,否则应用程序将无法工作。devDependencies中的模块不需要安装在生产服务器上,因为您不是在该机器上开发的。链接
我想在回答中补充我对这些依赖性解释的看法
依赖项用于直接在代码库中使用,通常会在生产代码中使用,或代码块中使用devDependencies用于构建过程、帮助您管理最终代码的方式的工具、第三方测试模块(例如webpack)
依赖关系与开发依赖关系
开发依赖项是仅在开发期间需要的模块,而依赖项在运行时需要。如果您正在部署应用程序,则必须安装依赖项,否则应用程序将无法正常工作。从代码中调用的使程序能够运行的库可以被视为依赖项。
例如,反应,反应域
开发依赖模块不需要安装在生产服务器上,因为您不需要在该机器上进行开发。将代码转换为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
有些模块和软件包仅用于开发,而在生产中不需要。就像文档中所说的:
如果有人计划在他们的程序中下载并使用您的模块,那么他们可能不想或不需要下载并构建您使用的外部测试或文档框架。在这种情况下,最好在devDependencies散列中列出这些附加项。
依赖项:项目/包需要在生产环境中工作的包。
devDependencies:您的项目/包在开发时需要工作但在生产中不需要的包(例如:测试包)
peerDependencies:您的项目/包需要与之协同工作(与它们“协同工作”)或作为基础的包,主要用于开发插件/组件以了解您的插件/组件应该与哪个版本的“主”包协同工作(例如:React 16)