Yarn: يستخدم الغزل المطابقةnext / الإصدار غير المستقر بدلاً من أحدث مطابقة مستقرة مثل NPM

تم إنشاؤها على ٤ نوفمبر ٢٠١٦  ·  3تعليقات  ·  مصدر: yarnpkg/yarn

هل تريد طلب ميزة أو الإبلاغ عن خطأ ؟
Bug 🐜 😱 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 بنفس الحزمة. json:

يرجى ذكر node.js والغزل وإصدار نظام التشغيل.
node.js v7.0.0
كل من الغزل v0.16.0 و v0.19.0-0 (master at f0d875a67a06d8b2405be177d0c43820442d802b) بهما الخلل
كل من npm v3.10.9 و v4.0.2 يفعل الشيء المتوقع
macOS Sierra 10.12.2 Beta (16C32f)

التعليق الأكثر فائدة

تمت مصادفة هذا عند تثبيت nightmare عبر الغزل - يعتمد الكابوس على electron@^1.4.4 الذي يتحول إلى 1.6.0 وهو أقل من beta dist-tag on npm. أحدث إصدار هو 1.4.15 . لقد كتبت رمزًا بدون علمي مقابل إصدار تجريبي من الإلكترون ، والآن أحتاج إلى تقليله لتشغيله على الإنتاج.

كان الحل هو التصريح صراحةً عن إصدار electron الذي أردته في package.json بشكل منفصل.

ال 3 كومينتر

واجهت نفس الشيء. يبدو أن هذا يحدث بشكل خاطئ في NpmResolve#findVersionInRegistryResponse ، حيث لا يكون range مطلقًا مفتاحًا لـ dist-tags للاعتماديات المتعدية ولكن ببساطة نطاق semver ، و config.resolveConstraint ثم يعود ببساطة أعلى واحد.
(خير مثال على وقوع الكارثة هو آلية إطلاق الكناري المكسورة بشكل مروع لـ lerna ، والتي تنتج إصدارات ما قبل الإصدار من semver والتي تنتهي بتجزئة الالتزام القصيرة git. أعتقد أن المبرمجين الحقيقيين دائمًا ما يعدون تنازليًا ، ويبدأون من "f".)

أواجه هذه المشكلة أيضًا مع حزمة الكتابة.

تشغيل 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"

يمكنك أن تجادل من يفعل الخطأ. أعتقد أن الغزل يتبع semver ويبحث عن أحدث إصدار صالح وهو 2.1.1 في حالتي.

يبدو أن Npm تستخدم المعلومات من علامات dist ومن المفترض أن تستخدم الكتابة المطبوعة الإصدار "2.1.1-rc".

تمت مصادفة هذا عند تثبيت nightmare عبر الغزل - يعتمد الكابوس على electron@^1.4.4 الذي يتحول إلى 1.6.0 وهو أقل من beta dist-tag on npm. أحدث إصدار هو 1.4.15 . لقد كتبت رمزًا بدون علمي مقابل إصدار تجريبي من الإلكترون ، والآن أحتاج إلى تقليله لتشغيله على الإنتاج.

كان الحل هو التصريح صراحةً عن إصدار electron الذي أردته في package.json بشكل منفصل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات