使用其他npm软件包的依赖关系而不是将其包含在您自己的package.json依赖关系列表中

时间:2019-06-25 04:40:57

标签: node.js npm npm-install eslint

我正在创建一个npm包,该包本质上是其他项目的模板。它包含一些我在几乎每个项目中使用的自定义组件,功能,配置和其他类似文件。

与其让我所有的单个项目列出完全相同的依赖项(所有相同的版本),不如将所有常见的依赖项简单地包含在单个npm包中会容易得多。这样,每个项目只需要安装和更新一个单独的程序包(以及可能会安装的,该项目独有的任何其他程序包),而不必为每个项目安装和更新每个单独的公共依赖项。

这意味着:

  • 我可以轻松地看到哪些包对于项目是唯一的,因为自定义模板包之外的任何东西都是项目的唯一依赖项。
  • 安装和更新将更快。
  • 对导入/请求和使用每个依赖项没有任何更改,因为它们都与我的package.json依赖项都列在同一node_modules文件夹中。
  • 如果我决定添加/删除一个公共依赖项,则无需检查每个单独的项目是否也已添加/删除了它。我只需要运行'npm update`,它将为我完成所有工作。
  • 我可以确保所有项目都使用通用依赖项的兼容版本。如果要通过在package.json中列出所有常见的依赖关系来以传统方式处理依赖关系,则运行npm outdated将显示更新可用。但是,如果新版本不兼容,那么我就不想更新它们。如果我以这种新方式提出建议,那么只有在我知道它们相互兼容时(即,只有当我的自定义模板包中有可用的更新时),公共依赖才会被更新。

我听说这是不好的做法,但我不明白为什么在这种情况下会如此。我在这里看不到什么缺点?当我使用no-extraneous-dependencies规则执行此操作时,eslint-plugin-import会抱怨,但是我可以轻松地创建一个异常。不执行此操作只是标准的最佳实践,因此每个项目都是完全独立的(这对我来说不是问题),还是有其他重要原因不执行此操作?

0 个答案:

没有答案