发布 package-lock.json 有啥问题

Posted

技术标签:

【中文标题】发布 package-lock.json 有啥问题【英文标题】:What's the issue in publishing package-lock.json发布 package-lock.json 有什么问题 【发布时间】:2018-07-27 00:45:19 【问题描述】:

我从 博客https://medium.com/@Quigley_Ja/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8 和文档https://docs.npmjs.com/files/package-lock.json

阅读了 package-lock.json 的用法

但是,不清楚为什么不允许发布package-lock.json 或者可能会出现什么问题。愿有人照亮。

谢谢

【问题讨论】:

package-lock.json 更像是一个临时文件,可能会发生变化,所以你为什么要发布它 我知道它代表了我们项目的确切状态,为什么叫它临时文件? “像一个临时”文件意味着它将特定于您使用节点应用程序运行的时间和内容。如果您将应用发布到 npm,则实际上不需要。 好点 Arpit,但是除了 package.json 之外,当它提供更准确的项目状态时,为什么我们会认为它不是必需的 @ArpitSolanki 这根本不是临时的,您甚至应该将其签入源代码控制。您是否正在考虑在数据库等中使用“锁定文件”?两者不要混淆,package-lock.json不是锁文件。 【参考方案1】:

它们不应该被发布的原因是因为它不会做任何事情。 npm 将忽略任何不在项目根目录中的package-lock.json,因为锁定项目本身以外的任何地方的依赖项是没有意义的。

没有任何出错的危险,发布它只是没有意义。

来源:https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json

不同的是package-lock.json是不能发布的,如果在根项目以外的地方找到会被忽略。

【讨论】:

【参考方案2】:

Should package-lock.json also be published? 和 Do I commit the package-lock.json file created by npm 5? 可能重复

相信你指的是

关于 package-lock.json 的一个关键细节是它不能被发布

在https://docs.npmjs.com/files/package-lock.json.

package-lock.json 如果在 NPM 上发布,确实会被忽略,但 package-lock.json 旨在提交源代码控制。 它确保您在本地计算机上使用的dependencies 与生产环境中的版本相同。 您不希望在package-lock.json 中有devDependencies,尽管它们可能会影响生产环境。

【讨论】:

您的答案的要点是,锁定文件中存在不应发布的 dev 依赖项,但包文件中也存在 dev 依赖项。 我已经阅读了关于 SO 的两个答案,提出这个问题是因为我们需要直接和帮助的问题,这些问题不回答要求的事情

以上是关于发布 package-lock.json 有啥问题的主要内容,如果未能解决你的问题,请参考以下文章

npm-shrinkwrap.json 和 package-lock.json 有啥区别?

NPM5,package-lock.json 和 package.json 有啥区别?

在 package-lock.json 中解析 URL 有啥意义?

package-lock.json 和 package.json 有啥区别,啥时候生成 package.json?

package-lock.json 中的 "requires: true" 有啥作用

有啥方法可以修复 package-lock.json lockfileVersion 以便 npm 使用特定格式?