对于我们的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
更新2
现在有3个答案,到目前为止,没有一个可以解决问题,我开始相信这不是我的错,但可能是Pixi JS的错误。我打开了一个问题on their GitHub page,也许他们可以提供帮助。
答案 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.json
或npm-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
答案 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子模块:
npm init -y ## Create empty npm module
npm install pixi.js@5.0.0-rc.3 --save --save-exact ## Add pixi.js
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" } }, ...