NPM安装了与package.json不同的版本

时间:2019-06-28 10:27:43

标签: node.js npm npm-install pixi.js

对于我们的Electron应用程序,我们需要特定版本的pixi.js(5.0.0-rc.3)。因此,在package.json中,我们指定了"pixi.js": "^5.0.0-rc.3",

现在我们运行npm install并打开我们的应用程序,然后显示pixi的欢迎消息和package-lock.json状态版本5.0.4。我们尝试删除node_modules文件夹并重新安装所有模块,但是版本仍然错误。

我们在html文件中的导入语句为const PIXI = require('pixi.js');,如果我没有记错的话,这应该得到本地安装的pixi版本。

这是一个错误吗?还是故意的(如果是,哪个目的)?

更新

现在有一些答案和评论,这是到目前为止我们进一步尝试的方法:

  • 删除package-lock.json,node_modules文件夹(本地和全局)并再次运行npm i
  • 重新安装NodeJS(LTS)
  • 使用当前版本的NodeJS测试所有内容
  • 可以在安装范围内的任何版本中从package.json中删除“ ^”
  • 在另一台Windows 10计算机和macOS上对其进行了测试

更新2

现在有3个答案,到目前为止,没有一个可以解决问题,我开始相信这不是我的错,但可能是Pixi JS的错误。我打开了一个问题on their GitHub page,也许他们可以提供帮助。

3 个答案:

答案 0 :(得分:1)

如果要安装特定版本,请不要在~中使用^package.json,请完全使用该版本

  

波浪号〜匹配最新的补丁程序版本(第三个数字)   用于指定的次要版本(第二个数字)。
  〜1.2.3 将与所有 1.2.x 版本匹配,但暂不支持1.3.0。

     

插入符号^更放松。它与最新的次要版本匹配   (第二个数字)用于指定的主要版本(第一个   号)。
   ^ 1.2.3 将与任何 1.x.x 版本(包括1.3.0)匹配,但是   推迟2.0.0。

您的情况:"pixi.js": "5.0.0-rc.3"

发件人:What's the difference between tilde(~) and caret(^) in package.json?

答案 1 :(得分:1)

原始答案

如果您绝对需要该版本,则应该:

  • 将您的package.json文件更新为"pixi.js": "5.0.0-rc.3"
  • 删除现有的package-lock.jsonnpm-shrinkwrap.json文件。
  • 重新运行npm i

通过这样做,您可以将依赖项固定到该特定版本。

也请查看此semver calculator。您可以加载pixi.js包。然后输入5.0.0-rc.3^5.0.0-rc.3。它将向您展示^如何改变查找匹配项的行为。

我发现,相对于某些人来说,计算器在视觉上通常比阅读文档更能帮助您更好地理解semver数学。

希望这会有所帮助!

更新后的答案

如果您查看package-lock.json文件并查看pixi.js的依赖关系,则所有依赖关系都使用^且未将版本固定到5.0.0-rc3。相反,它们被迫使用最新的修补程序版本5.0.4,并且在NPM / pixis方面进行了设置,而不是您自己的。

    "pixi.js": {
      "version": "5.0.0-rc.3",
      "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-5.0.0-rc.3.tgz",
      "integrity": "sha512-+B6ZMvJNEz/IoiC+BrwP9PsDonEAj4TOZw+yuZ/K8WQokcSm9uAp3PJ+6eFFWTjnkxsAcMP9tgldmDdTFoAF7w==",
      "requires": {
        "@pixi/accessibility": "^5.0.0-rc.3",
        "@pixi/app": "^5.0.0-rc.3",
        "@pixi/constants": "^5.0.0-rc.3",
        "@pixi/core": "^5.0.0-rc.3",
        "@pixi/display": "^5.0.0-rc.3",
        "@pixi/extract": "^5.0.0-rc.3",
        "@pixi/filter-alpha": "^5.0.0-rc.3",
        "@pixi/filter-blur": "^5.0.0-rc.3",
        "@pixi/filter-color-matrix": "^5.0.0-rc.3",
        "@pixi/filter-displacement": "^5.0.0-rc.3",
        "@pixi/filter-fxaa": "^5.0.0-rc.3",
        "@pixi/filter-noise": "^5.0.0-rc.3",
        "@pixi/graphics": "^5.0.0-rc.3",
        "@pixi/interaction": "^5.0.0-rc.3",
        "@pixi/loaders": "^5.0.0-rc.3",
        "@pixi/math": "^5.0.0-rc.3",
        "@pixi/mesh": "^5.0.0-rc.3",
        "@pixi/mesh-extras": "^5.0.0-rc.3",
        "@pixi/mixin-cache-as-bitmap": "^5.0.0-rc.3",
        "@pixi/mixin-get-child-by-name": "^5.0.0-rc.3",
        "@pixi/mixin-get-global-position": "^5.0.0-rc.3",
        "@pixi/particles": "^5.0.0-rc.3",
        "@pixi/polyfill": "^5.0.0-rc.3",
        "@pixi/prepare": "^5.0.0-rc.3",
        "@pixi/runner": "^5.0.0-rc.3",
        "@pixi/settings": "^5.0.0-rc.3",
        "@pixi/sprite": "^5.0.0-rc.3",
        "@pixi/sprite-animated": "^5.0.0-rc.3",
        "@pixi/sprite-tiling": "^5.0.0-rc.3",
        "@pixi/spritesheet": "^5.0.0-rc.3",
        "@pixi/text": "^5.0.0-rc.3",
        "@pixi/text-bitmap": "^5.0.0-rc.3",
        "@pixi/ticker": "^5.0.0-rc.3",
        "@pixi/utils": "^5.0.0-rc.3"
      }
    },

如果您希望它能够正常工作,那么我真的建议您更新应用程序以使其与更新的软件包一起使用,而不是这样做,您需要

  • 5.0.0-rc3标签https://github.com/pixijs/pixi.js/tree/v5.0.0-rc.3处分叉pixi.js
  • 更新package.json文件以使其全部依赖于5.0.0-rc.3而不是^5.0.0-rc.3
  • 在分支的存储库上创建依赖项,而不是在已发布的npm模块上创建依赖项。

答案 2 :(得分:0)

TLDR:解决方案是在package.json中显式指定@pixi子模块的确切版本,如下所示:

"dependencies": {
  "@pixi/core": "5.0.0-rc.3",
  ... (all other submodules here) ...
  "pixi.js": "5.0.0-rc.3"
}

详细说明:

正在安装pixi.js模块版本5.0.0-rc.3,但这实际上只是一堆@pixi子模块及其各自版本的容器。子模块依赖项的指定类似于@pixi/core": "^5.0.0-rc.3"^导致npm获取更多最新版本。

我能够通过将子模块的版本添加到package.json文件中来控制子模块的版本,该文件位于pixi.js的依赖项旁边


以下是我用来确认发生了什么的步骤,并列出了@pixi子模块:

  1. npm init -y ## Create empty npm module
  2. npm install pixi.js@5.0.0-rc.3 --save --save-exact ## Add pixi.js
  3. cat package-lock.json ## See excerpts below
...
    "@pixi/core": {
      "version": "5.0.4",
      "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.0.4.tgz",
      "integrity": "sha512-P2K2JJC+BFZrRZT9P0+Ir8jd7VrH6w7/L1Njg2+iSetW9TdjkPahR+w93VGwpEzEkrYHoNs6FbSFCY38P/6g8A==",
      "requires": {
        "@pixi/constants": "^5.0.4",
        "@pixi/display": "^5.0.4",
        "@pixi/math": "^5.0.4",
        "@pixi/runner": "^5.0.4",
        "@pixi/settings": "^5.0.4",
        "@pixi/ticker": "^5.0.4",
        "@pixi/utils": "^5.0.4"
      }
    },
...
    "pixi.js": {
      "version": "5.0.0-rc.3",
      "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-5.0.0-rc.3.tgz",
      "integrity": "sha512-+B6ZMvJNEz/IoiC+BrwP9PsDonEAj4TOZw+yuZ/K8WQokcSm9uAp3PJ+6eFFWTjnkxsAcMP9tgldmDdTFoAF7w==",
      "requires": {
        "@pixi/accessibility": "^5.0.0-rc.3",
        "@pixi/app": "^5.0.0-rc.3",
        "@pixi/constants": "^5.0.0-rc.3",
        "@pixi/core": "^5.0.0-rc.3",
        "@pixi/display": "^5.0.0-rc.3",
        "@pixi/extract": "^5.0.0-rc.3",
        "@pixi/filter-alpha": "^5.0.0-rc.3",
        "@pixi/filter-blur": "^5.0.0-rc.3",
        "@pixi/filter-color-matrix": "^5.0.0-rc.3",
        "@pixi/filter-displacement": "^5.0.0-rc.3",
        "@pixi/filter-fxaa": "^5.0.0-rc.3",
        "@pixi/filter-noise": "^5.0.0-rc.3",
        "@pixi/graphics": "^5.0.0-rc.3",
        "@pixi/interaction": "^5.0.0-rc.3",
        "@pixi/loaders": "^5.0.0-rc.3",
        "@pixi/math": "^5.0.0-rc.3",
        "@pixi/mesh": "^5.0.0-rc.3",
        "@pixi/mesh-extras": "^5.0.0-rc.3",
        "@pixi/mixin-cache-as-bitmap": "^5.0.0-rc.3",
        "@pixi/mixin-get-child-by-name": "^5.0.0-rc.3",
        "@pixi/mixin-get-global-position": "^5.0.0-rc.3",
        "@pixi/particles": "^5.0.0-rc.3",
        "@pixi/polyfill": "^5.0.0-rc.3",
        "@pixi/prepare": "^5.0.0-rc.3",
        "@pixi/runner": "^5.0.0-rc.3",
        "@pixi/settings": "^5.0.0-rc.3",
        "@pixi/sprite": "^5.0.0-rc.3",
        "@pixi/sprite-animated": "^5.0.0-rc.3",
        "@pixi/sprite-tiling": "^5.0.0-rc.3",
        "@pixi/spritesheet": "^5.0.0-rc.3",
        "@pixi/text": "^5.0.0-rc.3",
        "@pixi/text-bitmap": "^5.0.0-rc.3",
        "@pixi/ticker": "^5.0.0-rc.3",
        "@pixi/utils": "^5.0.0-rc.3"
      }
    },
...