【问题标题】:why npm install does not respect version in package.json为什么 npm install 不尊重 package.json 中的版本
【发布时间】:2022-04-27 13:04:15
【问题描述】:

Nodejs 版本 - 14.17.3
npm 版本 - 6.14.13

我对软件包版本的差异感到困惑 -
我在package.json 中声明的那个不同于 npm install 命令正在安装的那个。

package.json -

{
  "name": "training-project-metadata",
  "version": "1.0.0",
  "description": "",
  "main": "module1.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "tildify": "^2.0.0"
  },
  "bundleDependencies": [
    "tildify"
  ]
}

如果我运行 npm install 命令,这是正在创建的 package-lock.json -

{
  "name": "training-project-metadata",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "tildify": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/tildify/-/tildify-3.0.0.tgz",
      "integrity": "sha512-9ZLMl75qnTLr7oSEmWJbKemFS/fP4TMBiF6PFwGwLpgobebU1ehXoGbadJ+7jT8fjaz2G82JgN9G4taz+o1j1w==",
      "dev": true
    }
  }
}

我什至尝试从 package.json 中删除 ^ 符号以使其成为准确的版本 - 但这没有帮助。
我发现如果我显式运行此命令 - 只有安装了正确的 2.0.0 版本。

npm install tildify@2.0.0 --save-dev

谁能帮我理解为什么它不适用于npm install 命令?

谢谢!

【问题讨论】:

  • 什么是 bundleDependencies?也许它告诉 npm 忽略 devDependencies 中的指定版本?
  • yarn1 也有同样的结果?
  • 它只是告诉哪些包将在 tar 文件中 - 如果我打算使用 npm pack 命令
  • 您是否尝试删除 package-lock.json 文件并再次运行 npm install?
  • 是的,我确实删除了 package-lock.json 和 node-modules 文件夹并运行了 npm install 命令。

标签: node.js npm npm-install


【解决方案1】:

类似的事情也发生在我身上。对我来说,我想安装

"@mui/lab": "^5.0.0-alpha.71"

但事实证明,npm 为我安装了这个。

5.0.0-alpha.79

那是因为您在版本号之前指定了^。我删除了^ 并再次尝试npm install,它安装了我想要的版本。 有关符号含义的更多信息,您可以在https://stackoverflow.com/a/25861938/15603575

中找到

【讨论】:

    猜你喜欢
    • 2020-08-08
    • 1970-01-01
    • 2019-07-01
    • 2017-02-10
    • 2018-03-30
    • 2015-08-19
    • 2015-04-22
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多