npm:dependencies与devDependencies及绑定的依赖项

6
使用搜索我已经找到了一些类似问题的好答案,但是我仍然不确定我是否理解正确。从这些答案中我了解到dependencies是运行应用程序所必需的,而devDependencies只在开发过程中需要(例如单元测试)。但是,如果我的应用程序依赖于jQuery,在构建步骤中(借助我的devDependencies),所有内容都会被捆绑成一个文件。在这种情况下,我应该将jQuery列为dependency还是devDependency呢?为了更清楚地表达我的观点,请看这个模块:
define(['jquery'], function($) {
  // use jQuery in this module
})

稍后,这个模块将被编译成类似于 application.build.js 的东西,其中包含此模块和 jQuery 依赖项。

你能展示一下你想要达成什么样的目标吗? - gnerkus
@gnerkus,请查看我的编辑。 - Sven
1个回答

10

既然最终结果是相同的,似乎没有明确的规则,但我发现了一些关于这个问题的讨论:

如果你正在构建一个应用程序

https://github.com/webpack/webpack/issues/520

使用 [插入构建工具/打包器] 构建的浏览器应用程序没有运行时 Node 依赖项,因此所有前端依赖项都应列为 devDependencies。 dependenciesdevDependencies 命名约定的历史渊源可以追溯到 node 作为服务器端包管理器 (...) 在 dependencies 下列出前端依赖项在我看来是无害的,但这是错误的。
(...) 作为每个人的一般建议,请将所有内容移动到 devDependencies 直到实际需要在 dependencies 中使用。

如果您正在构建库:

https://github.com/inuitcss/inuitcss/issues/225

在许多前端项目中,所有服务于浏览器的代码都是编译过的,没有运行时依赖。这意味着没有“dependencies”,只有“devDependencies”-所有依赖项都包含在开发期间进行的构建中。
也可以说,开发人员同样需要依赖性,因此将所有内容列在“dependencies”下是可以的。
我认为我们有可选的区别表示了合理的使用方式。对我来说, "dependencies" 设计应该代表使用的最小可行代码以及非必要内容。
就我看来,任何进入生产代码的内容都是一个“dependency”。
个人而言,我更倾向于最后一句话。有道理的是,“dependencies”告诉我们“应用程序代码”需要什么才能运行,“devDependencies”告诉开发人员构建/部署/应用程序/库所需的内容。

不过需要注意的是,如果有人通过npm install下载你的库来将其作为模块在他们自己的应用程序中使用,他们会下载很多他们实际上并不需要的依赖项


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接