使用搜索我已经找到了类似问题的一些很好的答案,但我仍然不确定我是否理解正确。
根据这些答案,我了解到dependencies
是运行应用程序所必需的,而devDependencies
仅在开发时需要(如单元测试)。
但是这个怎么样:我的应用程序依赖于jQuery,但在构建步骤期间(在devDependencies
的帮助下),所有内容都捆绑在一个文件中。在这种情况下,我应该将jQuery列为dependency
还是devDependency
?
为了让我的观点更清楚,请使用以下模块:
define(['jquery'], function($) {
// use jQuery in this module
})
稍后,这个模块将被编译成像application.build.js
这样的somehing,然后包含这个模块和jQuery依赖。
答案 0 :(得分:3)
由于最终结果是相同的,这里似乎没有明确的规则,但我在这个问题上找到了几个讨论:
https://github.com/webpack/webpack/issues/520
由[ insert build tool / bundler ]构建的浏览器应用程序没有运行时节点依赖项,因此所有前端依赖项都应列为devDependencies。
dependencies
vsdevDependencies
命名约定历来源于节点是服务器端包管理器(...)据我所知,在dependencies
下列出前端依赖关系是无害的,但是这是错误的。
(...)作为每个人的一般建议,将所有内容移至
devDependencies
,直到dependencies
下实际需要为止。
https://github.com/inuitcss/inuitcss/issues/225
在许多前端项目中,所有提供给浏览器的代码都已编译,没有运行时依赖项。这意味着没有
dependencies
,只有devDependencies
- 所有依赖项都包含在开发期间完成的构建中。有人也可能认为开发也需要依赖关系,所以可以列出所有
dependencies
的内容。
我认为我们有可选区别这一事实表明了使用它们的合理方式。 (对我而言)
dependencies
指定代表要使用的'最小可行'代码并指示什么是非必要的工作,这是有意义的。
在我看来,任何继续成为生产代码一部分的都是
dependency
。
就个人而言,我同意最后一句话。有意义的是dependencies
告诉我们应用程序代码需要运行什么,以及devDependencies
开发人员需要构建/部署/无论什么应用程序/库。
但有一点需要注意的是,如果有人npm install
你的图书馆将该套件用作他们自己的应用程序中的模块,他们将下载他们实际上并不需要的大量dependencies
。