gpt4 book ai didi

npm - 如何实际使用 package-lock.json 进行基于锁定版本的安装?

转载 作者:行者123 更新时间:2023-12-03 10:15:39 39 4
gpt4 key购买 nike

刚刚从 npm 3 更新到 5,以使用此功能。

抱歉,我一定遗漏了一些非常明显的东西,但是如何让 npm 尊重 中的固定版本| package-lock.json 安装时的文件?

假设我有一个 package.json带有一些过时的软件包。做一个 npm install会引入新东西并破坏我的应用程序。

比如我要稳定的主包是bootstrap - 我想在 阻止它的版本bootstrap@4.0.0-alpha.6 暂时,但是 npm install发现 4.0.0-beta.28 .

如果我 npm update任何包裹, package-lock.json 得到更新。

让我们转到我的开发目录。

这是我用于 bootstrap 的 package.json 条目:
"bootstrap": "^4.0.0-alpha.6"
这就是我在安装的软件包和元数据中看到的:

$ npm list 2>/dev/null | grep bootstrap
├─┬ bootstrap@4.0.0-alpha.6
├─┬ bootstrap-vue@0.16.1
│ ├── bootstrap@4.0.0-alpha.6 deduped


(env) jluc@py$ grep bootstrap package.json package-lock.json
package.json: "bootstrap": "^4.0.0-alpha.6",
package.json: "bootstrap-vue": "^0.16.1",
package-lock.json: "bootstrap": {
package-lock.json: "version": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz",
package-lock.json: "bootstrap-vue": {
package-lock.json: "version": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.16.1.tgz",
package-lock.json: "bootstrap": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-alpha.6.tgz",

看起来挺好的。锁是 bootstrap-4.0.0-alpha.6 .

但我如何实际使用 package-lock.json ?

这是我所做的:
  • 创建了一个全新的目录
  • 复制于 package.json package-lock.json
  • npm install .

  • 不好。 npm 再次发现 bootstrap beta 和 package-lock.json 没有效果,实际上是从 npm install 改写的做过。这与您在 dev 中想要的行为一致,但没有告诉我如何使用锁文件来稳定我的包。
    (env) jluc@trynpmlock$ npm list 2>/dev/null | grep bootstrap
    ├── bootstrap@4.0.0-beta.2
    ├─┬ bootstrap-vue@0.16.1
    │ ├── bootstrap@4.0.0-beta.2 deduped

    (env) jluc@trynpmlock$ grep bootstrap package.json package-lock.json
    package.json: "bootstrap": "^4.0.0-alpha.6",
    package.json: "bootstrap-vue": "^0.16.1",
    package-lock.json: "bootstrap": {
    package-lock.json: "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-beta.2.tgz",
    package-lock.json: "bootstrap-vue": {
    package-lock.json: "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-0.16.1.tgz",
    package-lock.json: "bootstrap": "4.0.0-beta.2",
  • 如果我删除 package.json 并且只有一个目录 package-lock.json ,然后 npm install安装很少,给我留下了截断的 package-lock.json
  • npm install 有一个 --no-package-lock选项,但这会阻止更新 package-lock.json .

  • 基本上我如何告诉 npm 安装 package.json 中的所有内容,但尊重 package-lock.json 中的锁?我是否使用了与 npm install 不同的命令? ?是不是因为 npm install 的 doc 在包安装的上下文中提到了锁,但是当你完整安装 package.json 时锁不适用?

    是的,我知道我可以指定 "bootstrap": "4.0.0-alpha.6" ,减去 ^ , 手动固定版本。

    我的环境:
    (env) jluc@py$ npm -v
    5.5.1

    最佳答案

    您需要使用 npm cipackage-lock.json 安装的命令.

    见:https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable

    关于npm - 如何实际使用 package-lock.json 进行基于锁定版本的安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47480617/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com