Вы хотите запросить функцию или сообщить об ошибке ?
Ошибка 🐜 😱 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:
Какое ожидаемое поведение?
Что 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)
Я столкнулся с тем же самым. Кажется, что это идет не так в 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
отдельно.
Самый полезный комментарий
Обнаружено это при установке
nightmare
через yarn - кошмар зависит отelectron@^1.4.4
который разрешается в1.6.0
который находится под тегомbeta
dist в npm. Самая последняя версия -1.4.15
. Я неосознанно написал код против бета-версии Electron, теперь мне нужно понизить ее, чтобы запустить в производственной среде.Моим обходным путем было явное объявление версии
electron
которую я хотел, вpackage.json
отдельно.