当前位置: 首页 > 知识库问答 >
问题:

关于依赖关系的最佳实践

汪信鸥
2023-03-14

保存package.json依赖项的最佳实践是什么?

例如,我看到很多依赖项是不固定的,比如:

  "tslint": "~5.11.0"

共有1个答案

段弘和
2023-03-14

简短回答:插入符号(^)和提交包-lock.json可能是最好的方法。这确保开发人员总是获得相同的依赖关系,并且是最不令人惊讶的。

npm特别建议您提交包-lock.json

强烈建议您将生成的包锁提交给源代码管理:这将允许您的团队、部署、配置项/持续集成中的任何其他成员以及在包源代码中运行npm install的任何其他成员获得与您开发时完全相同的依赖项树。

(摘自国家预防机制文件)

您提到过将package-lock.json推送到存储库会导致一些问题。我猜这是由于包锁被忽略和重写的问题,每次任何人安装任何东西。这不是正确的行为,根据这个答案,在NPM@5.4.2中得到了修正。

您不应该省略package-lock.json,而只是在package.json中指定确切的版本。如果您这样做,您的顶级依赖项将看起来很好且一致,但它们的依赖项将不会有锁定版本。这样,你就很有可能遇到bug了,但是它们就更难找到了。

(摘自国家预防机制文件)

您可能没有npmpublish对angular webapp进行发布,因此没有理由使用npm-shrinkwrap.json

我找不到任何文档说插入符号(^)范围是最佳实践,但我相信它们是最佳实践。

总之,标准使用插入符号范围和包-lock.json。这满足了您对固定依赖项的需求,并提供了一些其他好处,因此最好按照标准来做,除非您找到了另一个改变的理由。

 类似资料:
  • 问题内容: 我正在使用Spring 3和Hibernate 4 JPA。我对 javax.persistence JAR 感到困惑。我在Google上发现了以下两个Maven依赖项。请告诉我以下两个依赖项中需要哪个? 问题答案: 其中的第一个是API Jar,它定义了应用程序应使用的与供应商无关的接口。 第二个是该API的EclipseLink实现。 可以删除对第一个依赖项的引用,而只需使用Ecl

  • 编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;

  • 依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。

  • 依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。

  • 问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间

  • 问题内容: 我有一个二进制文件,其中ldd显示了意外的依赖项和libicuuc(来自“ icu”)。 由于在该系统上libxml动态依赖于libicuuc,因此ldd最终会找到它是有意义的,但是是否期望libicuuc也出现在A的ldd输出中?是否有一些命令仅检索链接为依赖项依赖关系的库? 问题答案: 显示启动应用程序或加载共享库时需要加载的所有库。 仅显示二进制文件的直接依赖项。 是否有一些命令