Yarn: Yarn использует соответствующую версию @next / unstable вместо последней соответствующей стабильной версии, такой как NPM

Созданный на 4 нояб. 2016  ·  3Комментарии  ·  Источник: yarnpkg/yarn

Вы хотите запросить функцию или сообщить об ошибке ?
Ошибка 🐜 😱 Yarn выбирает версии, отличные от NPM, с тем же спецификатором версии.

Каково текущее поведение?

  • Пакет aes-decrypter находится в npm: { latest: '1.0.3', beta: '1.0.0-0', next: '1.1.0' }
  • Пакет video.js находится в npm: { latest: '5.11.9', next: '5.12.6', alpha: '5.9.0-2' }
  • Пакет videojs-contrib-hls зависит от aes-decrypter@^1.0.3' и video.js@^5.10.1
  • Мой пакет зависит от videojs-contrib-hls@^3.6.7 в package.json :
{
  "name": "yarn-next-bug-test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "videojs-contrib-hls": "^3.6.7"
  }
}
  • Нет пряжи. Замок
  • Выполнить yarn

Пакеты, установленные и добавленные в yarn.lock:

  • [email protected] (правильно)
  • видео. [email protected] (неверно, должно быть 5.11.9, последняя стабильная соответствующая версия)
  • [email protected] (неверно, должно быть 1.0.3, последняя стабильная соответствующая версия)

Какое ожидаемое поведение?
Что NPM делает с тем же package.json:

Пожалуйста, укажите ваш node.js, yarn и версию операционной системы.
node.js v7.0.0
обе пряжи v0.16.0 и v0.19.0-0 (мастер на f0d875a67a06d8b2405be177d0c43820442d802b) имеют ошибку
оба npm v3.10.9 и v4.0.2 делают ожидаемую вещь
macOS Sierra 10.12.2 бета (16C32f)

Самый полезный комментарий

Обнаружено это при установке nightmare через yarn - кошмар зависит от electron@^1.4.4 который разрешается в 1.6.0 который находится под тегом beta dist в npm. Самая последняя версия - 1.4.15 . Я неосознанно написал код против бета-версии Electron, теперь мне нужно понизить ее, чтобы запустить в производственной среде.

Моим обходным путем было явное объявление версии electron которую я хотел, в package.json отдельно.

Все 3 Комментарий

Я столкнулся с тем же самым. Кажется, что это идет не так в NpmResolve#findVersionInRegistryResponse , где range никогда не является ключом dist-tags для транзитивных зависимостей, а просто диапазоном semver, а затем config.resolveConstraint просто возвращает самый высокий.
(Хорошим примером поразительной катастрофы является ужасно сломанный механизм канареечного выпуска lerna, который производит предварительные версии semver, которые заканчиваются коротким хешем фиксации git. Я думаю, настоящие программисты всегда считают в обратном порядке и начинают с 'f'.)

У меня тоже проблема с пакетом typscript.

Запуск npm view typescript 'dist-tags'
Дает такой вывод:

{ latest: '2.0.10',
  next: '2.2.0-dev.20161129',
  beta: '2.0.0',
  rc: '2.1.1',
  insiders: '2.0.6-insiders.20161017' }

Запуск npm install устанавливает версию 2.0.10.
После запуска пряжи у меня есть эта запись в yarn.lock

typescript@^2.0.9:
  version "2.1.1"
  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.1.tgz#41c2b64472f529331b2055c0424862b44ce58d42"

Можно поспорить, кто делает не так. Я думаю, что yarn следует за semver и ищет последний действующий выпуск, который в моем случае - 2.1.1.

Кажется, что Npm использует информацию из dist-тегов, а машинописный текст должен был использовать версию "2.1.1-rc".

Обнаружено это при установке nightmare через yarn - кошмар зависит от electron@^1.4.4 который разрешается в 1.6.0 который находится под тегом beta dist в npm. Самая последняя версия - 1.4.15 . Я неосознанно написал код против бета-версии Electron, теперь мне нужно понизить ее, чтобы запустить в производственной среде.

Моим обходным путем было явное объявление версии electron которую я хотел, в package.json отдельно.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги