【问题标题】:What is the deal with npm i and the package-lock file?npm i 和 package-lock 文件有什么关系?
【发布时间】:2020-10-08 19:45:36
【问题描述】:

我相信我了解npm i 的工作原理,将package.json 文件与dependencies 和这些库的版本一起使用。我知道package-lock.json 是该构建的输出,特定版本在树下。未来npm i 将使用此锁定文件中指定的版本。太好了!

我当前的问题是当我们删除package-lock.json 文件时,npm i 拉下库的最新版本忽略package.json 中指定的版本!为什么要这么做?

我们有几个库正在这样做,但在我们的新版本中造成严重破坏的是:"react-lazyload": "^2.6.2",。当锁定文件被删除时,它会下载2.6.8,这对我们的 UI 进行了重大更改。为什么npm会抢到最新的?

我检查了锁定文件,这是整个库中唯一使用它的实例,没有其他库请求新版本。

顺便说一句,这似乎只发生在我们的 Jenkins 服务器上,部署了我们所有的代码,它与我们的开发机器运行相同版本的 Node/npm:

node -v
v10.16.3
npm -v
6.9.0

【问题讨论】:

    标签: jenkins npm npm-install package.json package-lock.json


    【解决方案1】:

    它不会忽略 package.json 中的版本,它只是遵循语义版本控制规则。

    如果你使用 "react-lazyload": "^2.6.2" 这意味着 npm 将下载 2.X.X 版本的包,获取最新的次要版本(第二个数字)和最新的补丁(第三个数字)。

    如果你使用"react-lazyload": "~2.6.2",它将下载2.6.X版本的包,只获取最新的补丁(第三个数字)。

    如果您使用"react-lazyload": "2.6.2",它将始终下载版本 2.6.2

    【讨论】:

    • smh duh....忘了那些装饰器...谢谢!
    猜你喜欢
    • 2017-12-07
    • 2010-09-27
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2017-10-30
    相关资源
    最近更新 更多