Apakah Anda ingin meminta fitur atau melaporkan bug ?
Bug Yarn memilih versi yang berbeda dari NPM dengan penentu versi yang sama.
Apa perilaku saat ini?
aes-decrypter
ada di npm: { latest: '1.0.3', beta: '1.0.0-0', next: '1.1.0' }
video.js
ada di npm: { latest: '5.11.9', next: '5.12.6', alpha: '5.9.0-2' }
videojs-contrib-hls
tergantung pada aes-decrypter@^1.0.3'
dan video.js@^5.10.1
videojs-contrib-hls@^3.6.7
di package.json
:{
"name": "yarn-next-bug-test",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"videojs-contrib-hls": "^3.6.7"
}
}
yarn
Paket-paket yang diinstal dan ditambahkan ke yarn.lock adalah:
Apa perilaku yang diharapkan?
Apa yang dilakukan NPM dengan package.json yang sama ini:
Sebutkan versi node.js, benang, dan sistem operasi Anda.
node.js v7.0.0
baik benang v0.16.0 dan v0.19.0-0 (master di f0d875a67a06d8b2405be177d0c43820442d802b) memiliki bug
baik npm v3.10.9 dan v4.0.2 melakukan hal yang diharapkan
macOS Sierra 10.12.2 Beta (16C32f)
Saya mengalami hal yang sama. Ini tampaknya salah dalam NpmResolve#findVersionInRegistryResponse
, di mana range
tidak pernah menjadi kunci dist-tags
untuk dependensi transitif tetapi hanya rentang semver, dan config.resolveConstraint
kemudian cukup kembali yang tertinggi.
(Contoh yang baik dari bencana yang mencolok adalah mekanisme rilis canary yang rusak parah dari lerna, yang menghasilkan versi pra-rilis semver yang diakhiri dengan hash git commit pendek. Saya kira programmer sejati selalu menghitung mundur, dan mulai dari 'f'.)
Saya juga mengalami masalah ini dengan paket typscript.
Menjalankan npm view typescript 'dist-tags'
Memberikan output ini:
{ latest: '2.0.10',
next: '2.2.0-dev.20161129',
beta: '2.0.0',
rc: '2.1.1',
insiders: '2.0.6-insiders.20161017' }
Menjalankan npm install
menginstal versi 2.0.10
Setelah menjalankan yarn saya memiliki entri ini di yarn.lock
typescript@^2.0.9:
version "2.1.1"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.1.tgz#41c2b64472f529331b2055c0424862b44ce58d42"
Anda bisa berdebat siapa yang melakukan kesalahan. Saya pikir benang mengikuti semver dan mencari rilis valid terbaru yang dalam kasus saya adalah 2.1.1.
Npm tampaknya menggunakan info dari dist-tag dan TypeScript seharusnya menggunakan versi "2.1.1-rc".
Menemukan ini ketika menginstal nightmare
melalui benang - mimpi buruk tergantung pada electron@^1.4.4
yang diselesaikan menjadi 1.6.0
yang berada di bawah tag dist beta
pada npm. Versi terbaru tertinggi adalah 1.4.15
. Saya tanpa sadar menulis kode terhadap elektron versi beta, sekarang perlu menurunkan versinya untuk berjalan pada produksi.
Solusi saya adalah secara eksplisit mendeklarasikan versi electron
yang saya inginkan di package.json
secara terpisah.
Komentar yang paling membantu
Menemukan ini ketika menginstal
nightmare
melalui benang - mimpi buruk tergantung padaelectron@^1.4.4
yang diselesaikan menjadi1.6.0
yang berada di bawah tag distbeta
pada npm. Versi terbaru tertinggi adalah1.4.15
. Saya tanpa sadar menulis kode terhadap elektron versi beta, sekarang perlu menurunkan versinya untuk berjalan pada produksi.Solusi saya adalah secara eksplisit mendeklarasikan versi
electron
yang saya inginkan dipackage.json
secara terpisah.