NPM устанавливает другую версию из package.json - PullRequest
1 голос
/ 28 июня 2019

Для нашего приложения 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

Сейчас есть три ответа, и ни один из них не может решить проблему до сих пор, я начинаю верить, что это не моя вина, но может быть ошибкой в ​​Pixi JS. Я открыл вопрос на их странице GitHub , возможно, они могут помочь.

Ответы [ 3 ]

1 голос
/ 28 июня 2019

Оригинальный ответ

Если вам абсолютно необходима эта версия, вам следует:

  • обновить файл package.json до "pixi.js": "5.0.0-rc.3".
  • Удалите существующий файл package-lock.json или npm-shrinkwrap.json.
  • Перезапустите npm i

Этим вы закрепите свою зависимость от этой конкретной версии.

Также ознакомьтесь с калькулятором semver .Вы можете загрузить пакет pixi.js.Затем введите 5.0.0-rc.3 и ^5.0.0-rc.3.Он покажет вам, как ^ меняет поведение поиска совпадений.

Я обнаружил, что калькулятор часто визуально помогает лучше понять математику, чем чтение документов для некоторых людей.

Надеюсь, это поможет!

Обновленный ответ

Если вы посмотрите на файл 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"
      }
    },

Похоже, что вы хотите, чтобы это работало, иЯ бы действительно посоветовал вам обновить приложение, чтобы оно работало с обновленным пакетом, вместо этого вам нужно

  • fork pixi.js в теге 5.0.0-rc3, https://github.com/pixijs/pixi.js/tree/v5.0.0-rc.3
  • Обновите файл package.json, чтобы сделать все его зависимости 5.0.0-rc.3 вместо ^5.0.0-rc.3
  • Создайте зависимость от вашего разветвленного репозитория вместо опубликованного модуля npm.
1 голос
/ 28 июня 2019

Если вы хотите установить определенную версию, не используйте ~ или ^ в 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"

От: В чем разница между тильдой (~) и кареткой (^) в package.json?

0 голосов
/ 30 июня 2019

TLDR: Решение состоит в том, чтобы явно указать точные версии подмодулей @pixi в вашем package.json, например:

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

Подробное объяснение:

Вы устанавливаете модуль версии 5.0.0-rc.3 модуля pixi.js, но на самом деле это всего лишь контейнер для нескольких субмодулей @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"
      }
    },
...
...