我的应用程序是node v4,我在v4上写回了它,并且从来不需要更新它(如果它没有损坏的话……)。也就是说,直到其中一个依赖项在次要版本更新中删除了v4支持。
我读到在5.x+中有一个关于package-lock.json的想法
当我必须从源重新安装时,package-lock.json概念是否可以防止次要版本破坏我的应用程序的情况?
我基本上是想验证node_modules是否按预期工作,并且每次我运行npm install时,我都会得到与最初相同的node_modules,即使有五个深度依赖项决定更新他们的包,我也不想要它。
发布于 2018-07-24 04:42:26
正如您在评论中所说的,答案是肯定的。
对于您的依赖项依赖项,运行npm install将安装在它们各自的package.json中指定的版本(它们没有package.json-lock.json,因为它没有发布,但它们可能有一个shrinkwrap),除非您运行npm update。
简而言之,如果你运行npm update,你只会在你不想运行的场景中运行,但是npm install不会给你带来麻烦。
顺便说一句,您可以通过将package.json复制到2环境中轻松地复制该行为,在该环境中,您拥有所需的2个节点版本。
发布于 2018-07-12 13:44:38
对于npm修改node_modules树或package.json的任何操作,都会自动生成package-lock.json。它描述了生成的确切树,这样无论中间依赖项更新如何,后续安装都能够生成相同的树。
此文件旨在提交到源代码库中,并用于各种用途:
描述依赖关系树的单一表示,以确保队友、部署和持续集成安装完全相同的依赖关系。
为用户“穿越”到node_modules以前的状态提供了便利,而不必提交目录本身。
通过可读的源代码管理差异来促进树更改的更大可见性。
并通过允许npm跳过先前安装的包的重复元数据解析来优化安装过程。
关于package-lock.json的一个关键细节是它不能被发布,如果在toplevel包以外的任何地方找到它,它都将被忽略。它与npm-shenshwrap.json(5)共享一种格式,本质上是相同的文件,但允许发布。除非部署CLI工具或以其他方式使用发布过程来生产生产包,否则不建议这样做。
如果package-lock.json和npm-shinshwrap.json都存在于包的根目录中,则package-lock.json将被完全忽略。
https://stackoverflow.com/questions/51298070
复制相似问题