【问题标题】:Why package-lock.json is created if npm already have the npm-shrinkwrap.json for locking purpose?如果 npm 已经有 npm-shrinkwrap.json 用于锁定目的,为什么还要创建 package-lock.json?
【发布时间】:2019-02-20 16:07:30
【问题描述】:

npm-shrinkwrap.json:锁定 node_modules 树以及依赖和嵌套依赖,以防止包代码在其他机器上中断。

package-lock.json:锁定 node_modules 树以及依赖和嵌套依赖,防止包代码在其他机器上被破坏。

那么,如果 npm 已经有 npm-shrinkwrap.json 用于锁定目的,为什么还要创建 package-lock.json

为什么他们创建新的 package-lock.json 文件来解决 npm 版本兼容性问题,因为开发人员已经在使用 npm-shrinkwrap.json?? p>

任何简单、容易且解释清楚的示例答案?

【问题讨论】:

    标签: node.js npm package-lock.json npm-shrinkwrap


    【解决方案1】:

    默认情况下,npm 会在您的源目录中发布大多数文件,并且 多年来,人们一直在发布收缩包装。我们不想 打破兼容性。默认情况下,使用 --save 和 shrinkwrap,有 它意外进入并传播的风险很大 注册表,基本上使我们能够更新 deps 和 重复数据删除... null。

    所以我们选择了一个新名称。我们选择了一个新名字 突然。新的锁文件基本上共享所有相同的代码, 完全相同的格式

    这个想法绝对是让 package-lock.json 成为收缩包装技术中最新和最伟大的,而 npm-shrinkwrap.json 则保留给那些非常关心他们的库具有精确 node_modules 的人——npm- shrinkwrap 有一些 package-lock 现在没有的特殊依赖行为设置

    【讨论】:

    • "npm-shrinkwrap 有一些 package-lock 现在没有的特殊依赖行为设置" 我相信这是通过使用 npm cipackage-lock.json 解决的.
    【解决方案2】:

    他们做同样的事情。不过差别不大

    • package-lock.json 在发布包时会被 npm 忽略,而 npm-shrinkwrap.json 则不会。通常不建议使用 npm-shrinkwrap.json 发布模块
    • 当两者都在根目录时,使用npm-shrinkwrap.json

    【讨论】:

    • 如果 package-lock.json 不是用于发布,那么这个文件的目的是什么?是否只是为了保留在本机占用硬盘空间?
    • 其实挺好用的。建议将其提交到您的 git 项目中。在与多个开发人员一起工作的团队中,这确实有助于跟踪依赖关系的历史。此外,在使用 docker 时,您可能希望锁定项目依赖项。
    • 好的,所以,package-lock.json 用于 GitHub 或类似的东西,仅用于将其提交到您的 git 项目,但不适用于发布到 npm ?但是请你能说一下为什么 npm 文档说它不能被发布,然后它说如果在顶级包以外的地方找到它会被忽略。请问,你能清除这个吗?
    猜你喜欢
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2021-12-27
    • 2020-08-10
    • 2018-09-04
    相关资源
    最近更新 更多