Yarn: لا تقوم ترقية الغزل بتحديث `package.json` بشكل صحيح للاعتماديات المطورة

تم إنشاؤها على ٢٥ أكتوبر ٢٠١٦  ·  83تعليقات  ·  مصدر: yarnpkg/yarn

هل تريد طلب _ ميزة _ أو الإبلاغ عن _ خطأ _؟

_خلل برمجي_

ما هو السلوك الحالي؟

سيؤدي تشغيل yarn upgrade لترقية تبعية أحد المطورين ، حتى مع وجود علامة --dev ، إلى إضافة الإصدار الذي تمت ترقيته من التبعية إلى التجزئة dependencies في package.json بدلاً من devDependencies .

قد تكون هذه أيضًا مشكلة مع أنواع التبعية الأخرى (مثل النظير) ، لكنني لم أختبرها.

إذا كان السلوك الحالي عبارة عن خطأ ، فالرجاء تقديم خطوات إعادة الإنتاج.

$ mkdir foo && cd foo
$ yarn init
<snip>
$ yarn add lodash<strong i="19">@3</strong> --dev
<snip>

$ grep lodash package.json -C 1
  "devDependencies": {
    "lodash": "3"
  }

$ yarn outdated
yarn outdated v0.16.1
Package Current Wanted Latest
lodash  3.10.1  3.10.1 4.16.4

$ yarn upgrade lodash --dev
<snip>
success Saved 1 new dependency
└─ [email protected]

$ grep lodash package.json -C 1
  "devDependencies": {
    "lodash": "3"
  },
--
--
  "dependencies": {
    "lodash": "^4.16.4"
  }

ما هو السلوك المتوقع؟

yarn upgrade بتحديث سلسلة إصدار الإدخال في تجزئة devDependencies .

سيكون من الجيد أن يتم ذلك بدون استخدام --dev باستخدام الموقع الحالي للتبعية (ترقية أحد أقسام التطوير ستؤدي إلى تعديل devDependencies ، وستؤدي ترقية مركز عادي إلى تعديل dependencies ) .

يرجى ذكر node.js والغزل وإصدار نظام التشغيل.

$ node --version
v6.9.1
$ yarn --version
0.16.1
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.12
BuildVersion:   16A323
cat-bug

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

نفس هنا مع الغزل 1.3.2

ال 83 كومينتر

يمكنني أن أؤكد أنني أرى هذا يحدث في نفس الإصدار بالضبط من Yarn. بدلاً من تحديث تبعية التطوير الحالية ، فإنها تضيف مدخلاً جديدًا إلى "التبعيات" وتترك تبعية التطوير الحالية هناك.

تم تأكيد الخطأ هنا أيضًا.

كذلك هنا. يستمر إدخال standard في dependencies على الرغم من أنه يعيش في devDependencies .

لقد جربت كلاً من yarn upgrade standard و yarn upgrade standard -D . نفس الشيء.

برنامج جميل رغم ذلك! شكرا لكم على بنائه!

ها هي نفس المشكلة ، قبل قليل - # 1262

كذلك هنا.

كذلك هنا. تتم إضافة كل وحدة يتم تحديثها عبر yarn update إلى dependencies .
لم يتم توثيق --dev أو الخيارات الأخرى لـ yarn update ويبدو أنه تم تجاهلها.

يجب أن يقبل تحديث IMO نفس الخيارات مثل install - أو حتى يقوم بتحديث التبعية بشكل أفضل في الفئة الموجودة في الحزمة. json

node --version
v6.9.0
yarn --version
0.16.1

1620 يصلح هذا لذا سأغلق هذا وأقوم بنقل المناقشة هناك.

لم يتم إصلاحه بعد ، فأنا أستخدم أحدث خيوط الغزل المثبتة عبر Homebrew.

kube هل يمكنك إضافة المزيد من التفاصيل إذا كانت لا تزال تمثل مشكلة؟ إصدارات لنظام التشغيل ، العقدة ، الغزل؟ A package.json يمكن استخدامه للتكاثر؟

λ yarn --version
0.16.1

أنا على macOS 10.12.1 ، مثبتة على Yarn مع Homebrew.

وهذا هو package.json الذي حاولت استخدامه.

ts-loader و webpack-merge عفا عليه الزمن ، ترقيتهما مع إضافة الغزل إلى التبعيات ، مما يجعل devDependencies عفا عليها الزمن.

kube يرجى المحاولة على 0.17.0 الذي تم إصداره للتو ، تم تضمين هذا الإصلاح في هذا الإصدار ، ولكن ليس في 0.16.1 .

بالتأكيد ، لكن لا يزال لدى Homebrew 0.16.1

λ brew upgrade yarn
Error: yarn 0.16.1 already installed

حاولت التثبيت باستخدام NPM وكان لديك أحدث إصدار ، ولكن يبدو من الغريب تثبيت Yarn باستخدام NPM.

حسنًا ، كل شيء يعمل بشكل جيد عند استخدام 0.17.0 ، ولكن ربما يجب عليك تحديث إصدار Brew.
ما هو مدير الحزم المفضل أو طريقة تثبيت Yarn؟

المشروب هو الطريقة المفضلة لتثبيت OSX. لا تزال عملية يدوية لتحديثها على Homebrew ، لذلك سيتعين على شخص ما أن يطلب تحديثها كما فعلوا هنا: https://github.com/Homebrew/homebrew-core/pull/6060

عند تشغيل yarn upgrade ، لا يتم تحديث أي إصدارات في package.json . هذا أمر مزعج للغاية من NPM ، حيث يقوم بتحديث الأرقام تلقائيًا.

أنا أستخدم الغزل 0.17.2 من البيرة.

milesj ، من المحتمل أن تكون هذه مشكلة منفصلة ويرجى تقديم خطوات لإعادة الإنتاج جنبًا إلى جنب مع package.json الذي يمكننا استخدامه لإعادة الإنتاج.

سأقوم بإنشاء عدد جديد.

في Debian Stable ، yarn 0.17.4 ، يبدو أن هذه المشكلة قد تم إصلاحها على الأقل. قامت بترقية lodash@3 إلى lodash@4 بشكل صحيح ، لذلك قد يكون الأمر مجرد الذهاب إلى أحدث إصدار.

أحاول ترقية grunt-sass من 1.1.0 إلى 2.0.0 (في تبعيات __dev الخاصة بي__)
أنفذت yarn upgrade [email protected] لكني أضفت grunt-sass في __ التبعيات الخاصة بي ولم أقوم بترقية واحد في __dev- التبعيات__

لقد حاولت أيضًا استخدام yarn upgrade [email protected] --dev لكن المشكلة لا تزال قائمة

باستخدام الغزل v0.18.1 ما زلت غير قادر على فرض ترقية التبعية الفرعية. يضيف yarn upgrade إدخالًا جديدًا فقط إلى package.json ولا يُحدِّث التبعية الفرعية.

لا تزال المشكلة موجودة في 0.19.1 ، ولم تقم ترقية الغزل بتحديث package.json.

@ kittens لم يتم إصلاح هذا بواسطة # 1620

يمكنني تأكيد هذه المشكلة في 0.19.1 أيضًا.

الجميع - باستخدام yarn add <package-name> سيتم تحديث الحزمة التي تريدها في الوقت الحالي.

yarn upgrade لا يعمل أيضًا ، الإصدار 0.19.1

ترقية الغزل تقوم حاليًا بتحديث yarn.lock فقط ، وليس تحديث package.json.

يمكن تأكيد المشكلة في v0.20.3

لدي نفس المشكلة ، عند استخدام ترقية الغزل ، تقوم بترقية جميع الحزم ، ولكنها لا تنعكس في ملف package.json. v0.20.3 .. مزعج حقًا. لقد لاحظت أيضًا عند استخدام "تثبيت الغزل" أنه يقوم بتثبيت أحدث إصدارات جميع حزم القائمة في package.json ولا يلتزم بالإصدارات المذكورة فيه ، لذلك يشبه الغزل ترقيتها إلى أحدث إصدار ولا تعكس ذلك في package.json لكنه يظهر في إصدارات yarn.lock الحالية التي تم تثبيتها

kittens v0.20.3 @ Windows ولا يزال لا يقوم بتحديث package.json - ملف yarn.lock فقط. يجب عليك إعادة فتح هذا.

أنا أسقط الغزل وأعود إلى npm بسبب هذا الخطأ. بغض النظر عن الطريقة التي أحاول بها ترقية الحزم الخاصة بي ، فإن الغزل سوف يجلب أحدث الحزم في ذاكرة التخزين المؤقت ، ويحتفظ بالإصدارات القديمة في package.json الخاصة بي وفي مجلد node_modules. ما هي النقطة؟..

نعم! يمكنني أن أؤكد أن Yarn v0.21.3 يقوم أخيرًا بتحديث package.json ، على الأقل yarn upgrade-interactive command.

alexdevero لقد جربت للتو yarn upgrade على 3 مشاريع لي: لم يتم تحديث أي حزمة. json ....

لكني أؤكد أن yarn upgrade-interactive يعمل ... للمشروع الأول المحدث
الاستخدام التالي لـ yarn upgrade-interactive في المشاريع الأخرى التي تحتاج إلى نفس الترقية سيفشل ، أي "نجاح كل تبعياتك محدثة."

لقد اختبرت مع تحديث البرامج النصية للتفاعل من 0.9.x إلى 0.9.3 في كل من مشاريعي الثلاثة. yarn upgrade-interactive في المشروع الأول ، لكنه تجاهل بعد ذلك التحديث في مشروعين آخرين.

اعتبارًا من اليوم ، في الإصدار 0.21.3 ، لا يزال yarn upgrade يتصرف بشكل خاطئ.

أنا أستخدم yarn add package<strong i="7">@version</strong> --dev بدلاً من ذلك ، ويقوم بترقية الحزمة حسب الرغبة ويقوم بتحديث package.json بشكل صحيح.

Fwiw ، لقد كنت أستخدم upgrade-interactive والذي يبدو أنه لسبب ما يحقق حظًا أفضل.

🍒 🍒 🍒

سيكون من الجيد أن تعرف ، ما هو السلوك المتوقع للغزل في هذه الحالة. هل يمكن لأي من مطوري الغزل أن يقولوا ما إذا كان يجب على الغزل تحديث package.json أم لا؟

لقد قمت للتو بعمل yarn upgrade babel-cli والذي كان في devDependencies وتمت إضافته كتبعية إنتاج (إلى dependencies ) ... شيء ما لا يزال معطلاً تمامًا. أوه ، وأنا استخدم الغزل v 0.22.0 راجع للشغل!

تحرير: تبين ، لقد ضبطت NODE_ENV على "الإنتاج" (نظرًا لأن تطبيقي هو تطبيق عقدة) وهذا يفسد أشياء مثل "تثبيت الغزل" (والذي سيعمل مثل yarn install --production ويتخطى devDependencies على سبيل المثال).

ربما يتأثر yarn upgrade أيضًا بمتغير بيئة العقدة.

فقط أدركت هذا:
image

أنا لست مدافعًا أو أي شيء ، أعتقد أنه يجب إعادة فتح هذا ... لكن الكرات المقدسة. 720 قضية كافية لإغراق سفينة سياحية مليئة بمطوري الغزل.

لا تزال مشكلة +1 موجودة في Yarn v0.21.3 على Windows 10 Pro و Node 6.10.0.

هذا غير ثابت. أحصل عليه على macOS Sierra 10.12.4. لديّ بعض devDependencies وهي مستودعات git خاصة وواحدة قياسية dependency ( "jquery": "^3.1.1" ). أحدث إصدار من jQuery هو 3.2.1 ، و yarn upgrade يرى ذلك ( ├─ [email protected] ) لكنه لا يُحدّث package.json .

yarn --version
0.21.3
node --version
v7.7.4

أعد فتح.

Windows - فشل الإصدار 0.21.3 مع yarn upgrade ... عند تحديد حزمة بعد أن تقوم بتحديث كل من package.json و lock file.

نظام التشغيل Windows - الإصدار 0.22 -لا يزال لا يتم تحديث package.json ولكنه يقوم بتحديث ملف القفل.
عملت من نوع ما ولكن لم تحدد جميع الحزم التي كان يجب تحديثها وبالتالي كسر تبعيات الأقران المختلفة.

لحسن الحظ ، لقد استخدمته فقط في مشروع واحد وتمكنت من إعادة الفوضى. أحب فكرة الغزل ولكنني لن أزعجني بها حتى يتم فرزها.

Windows ، Yarn v0.22 - لا يتم تحديث package.json عند استخدام yarn upgrade كما ذكر LaughingBubba . تم تحديث المجلد node_modules ، لكن لم يتم تحديث المجلد package.json ، مما يؤدي إلى حدوث فوضى في إصدارات الحزم.

@ kittens لا يبدو أن هذا قد تم إصلاحه.

لقد رأيت هذا مرة أخرى في 0.23.2.

في حالتي ، يبدو أنه إذا كانت إحدى التبعيات التي تمت ترقيتها في قائمة واحدة على الأقل ليست devDep ، فإنها تضع كل الترقيات في التبعيات في package.json.

تحديث: مشاهدته أيضًا مع تحديث devDep واحد. يتم نسخها إلى أقسام دون ترقية.

هذا بالتأكيد لم يتم إصلاحه. فقدت ساعة الآن على هذا. ألم يكن من المفترض أن يكون الغزل أفضل من npm؟

@ fab1an ، في الوقت الحالي ، استخدم yarn add package-name<strong i="6">@latest</strong> [--dev] لتحديث الحزمة. يتصرف كما هو متوقع من upgrade ، تحديث package.json بشكل صحيح.

diegovilar ، شكرًا على npm-check -u لترقيتها.

لا يزال مكسورًا في Windows x64 ، Yarn 0.23.2

لكل من يعلق هنا ، أقترح استخدام yarn upgrade-interactive في الوقت نفسه. كان يعمل بشكل جيد هنا.

لا تزال معطلة وإذا كنت تستخدم yarn upgrade-iteractive ولا تعرف أي إصدار من tslint أو codelyzer أو typecript وما إلى ذلك تعتمد عليه الحزم مثل Angular أو Angular CLI ، فيمكنك وستتسبب في مجموعة من الأخطاء التي ستطاردك حتى بعد استرجاعها بالكامل. هل تم إعادة نشر هذه المشكلة؟

milesj NO. أنا هنا وكنت أستخدم فقط upgrade-interactive مع نفس المشكلات بالضبط.

لم أكن متأكدًا مما إذا كان هذا سيتلقى أي وقت وجهًا لأنه تم إغلاقه لعدة أشهر ، لذلك تم إنشاء مشكلة جديدة - # 3266

@ fab1an هذا مؤسف. لم أواجه أي مشكلة في تحديث package.json: /

كان @ fab1anmilesj لقد upgrade-interactive لا تحديث package.json على واحدة من مشاريعنا كذلك. يبدو أنه إذا قمت بالترقية ولم يكن لدى package.json الرقم الصحيح ، فلن تقوم جميع الترقيات التفاعلية بتحديث package.json ... أو شيء من هذا القبيل ... في كلتا الحالتين بالتأكيد يمكن أن يتفق معك على أنه لا يعمل في بعض الأحيان.

Windows 10 ، لا يزال yarn v0.23.4 لا يقوم بتحديث package.json عند القيام بـ yarn upgrade

تحرير: ربما هذا مقصود؟
على سبيل المثال: "semantic-ui-react": "^0.68.2" - يوجد بالفعل إصدار جديد (0.68.3) وهذا الإصدار مثبت وتغيير yarn.lock إلى 0.68.3 ولكن بسبب ^ في الإصدار (> = 0.68.2 <0.69.0) ليست هناك حاجة لتحديث package.json إلى ^0.68.3 ؟

iamfreee أنا أقوم بتشغيل Yarn v0.24.5 وتشغيل yarn upgrade لا يقوم بتحديث package.json ، فقط yarn.lock. هذا لا يمكن (أو على الأقل لا ينبغي) أن يكون مقصودًا ، لأنه أولاً وقبل كل شيء ، فإن الإصدار في package.json هو تعيين الإصدار الفعلي من الحزمة أولاً ، ثم فرض قيود الترقية ، أي ^ أو ~ . ثانيًا ، يؤدي تشغيل yarn upgrade على حزمة فردية إلى تغيير package.json ، فلماذا يختلف السلوك عند ترقية جميع الحزم؟ لماذا يجب أن يكون هناك تناقض في السلوك بين تشغيل yarn upgrade و yarn upgrade-interactive فهذا لا معنى له؟

تم إغلاق هذه المشكلة منذ فترة ، وبصراحة لا تحظى بأي قوة. يجب علينا فقط فتح قضية جديدة. حتى لو كان هذا السلوك مقصودًا ، ما زلت أعارضه. لا يجب ترقية yarn upgrade حتى إلى علامة @ latest لأن ماذا لو كان لديك قيد إصدار مختلف مدرج في package.json؟ انظر هنا: https://docs.npmjs.com/cli/update#caret -dependencies

leosco في حالتي ، لم يقم npm update بتحديث package.json أيضًا وكذلك yarn upgrade [package] لم يقم بالخدعة. لهذا السبب أعتقد أن المشكلة تتعلق بقيد الإصدار ^ ، أو السلوك المتوقع.

iamfreee كلا ، يجب أن تفعل npm update --save والذي من المفترض أن يكون السلوك الافتراضي لـ Yarn.

لقد نشرت عددًا جديدًا يشرح بالتفصيل كل هذا ، انظر هنا https://github.com/yarnpkg/yarn/issues/3492 وربما أكمل المناقشة هناك.

أود أيضًا أن أكرر أنني نجحت مع yarn interactive-upgrade بينما yarn upgrade --latest لم ينجح معي.
باستخدام الغزل v0.24.6 مع العقدة v7.10.0.

yarn upgrade --latest يعمل بشكل جيد: +1:

~> yarn -v
1.0.0
~> yarn upgrade --help | grep "\-\-latest" | head -n 1

  --latest       list the latest version of packages, ignoring version ranges in package.json

يبدو أن yarn interactive-upgrade يواجه مشكلات الآن في الإصدار 1.

milesj يمكنك تجربة يبني ليلا؟ https://yarnpkg.com/ar/docs/nightly قد يكون هذا العلاقات العامة قد أصلحه https://github.com/yarnpkg/yarn/commit/da2b9096057301273aa27336f70622dda09b6c33

kaylieEB لست متأكدًا ولكني أعتقد أن yarn interactive-upgrade يتصرف بشكل مختلف الآن. لقد قمت بتشغيله للتو في مشروع به الكثير من الترقيات الطفيفة ، ولم يتم تعديل package.json ، فقط yarn.lock . قبل الإصدار 1.0.2 ، أعتقد أنه كان من الممكن أن يظل package.json متزامنًا مع الإصدارات التي تمت ترقيتها ، ولكن قد أكون مخطئًا في هذا الأمر ... لم يغير أحدث إصدار ليلي هذا السلوك بالنسبة لي.

yarn upgrade --latest الآن بشكل جيد ، لكنني فضلت أن أكون قادرًا على اختيار ما تريد ترقيته بشكل تفاعلي ، ثم تعديل package.json وفقًا لذلك.

lehni يوجد أيضًا yarn interactive-upgrade --latest .

milesj : هل تقصد yarn upgrade-interactive --latest ؟
المستندات: https://yarnpkg.com/en/docs/cli/upgrade-interactive

خطأ نعم ، ضرطة الدماغ. شكر.

نفس هنا مع الغزل 1.3.2

نفس الشيء هنا مع الغزل 1.5.1

كسر في 1.5.1 مرة أخرى

قطعت مع -

$ node --version
v9.0.0
$ yarn --version
1.5.1

نفس المشكلة عقدة v8.9.4
غزل 1.5.1

حل واحد: استخدم yarn add بدلاً من yarn upgrade .

بالمختصر:

  • yarn upgrade : ترقية الحزم لأحدث نطاق ممكن محدد بواسطة pacakge.json ، لكن لا تقم بالكتابة فوقها
  • yarn add : قم بترقية الحزم إلى أحدث نطاق ممكن وأعد كتابة package.json
  • yarn update ، مثل npm update : غير موجود

لكن مستند تحديث npm يقول:

اعتبارًا من [email protected] ، سيقوم التحديث npm بتغيير package.json لحفظ الإصدار الجديد كحد أدنى من التبعية المطلوبة. للحصول على السلوك القديم ، استخدم تحديث npm - no-save.

لكن في الواقع...

 y > npm -v
5.7.0
 y > cat package.json
{
  "dependencies": {
    "lodash": "^4.17.5"
  }
}
 y > npm update lodash
npm WARN y No description
npm WARN y No repository field.
npm WARN y No license field.

+ [email protected]
added 1 package from 2 contributors in 1.004s
 y > cat package.json
{
  "dependencies": {
    "lodash": "^4.17.5"
  }
} 

لا أعرف أي شخص يجب استخدامه :( أضاف Yarn هذا السلوك في وقت ما في عام 2017 ثم كسره بصمت. تدعي npm أنها تمتلكه عندما لا يعمل أيضًا.

@ kittens الرجاء إعادة فتح هذه المشكلة.

كما قال octref yarn upgrade بترقية التبعيات إلى أحدث إصدار ولكن لا يستبدل yarn upgrade package.json . سيقوم yarn add <package> بتحديث الحزمة إلى أحدث إصدار لها إذا كانت مثبتة بالفعل والكتابة فوق package.json . هل هناك سبب لعدم قيام yarn upgrade بالكتابة فوق package.json ؟ إذا كان الأمر كذلك ، فربما يمكن إضافته كعلم إلى yarn upgrade .

[email protected]
[email protected]
os: MacOS

تعديل

اقرأ https://github.com/yarnpkg/yarn/issues/5602#issuecomment -377528617

حل واحد: استخدم yarn add بدلاً من yarn upgrade .

يعمل كالسحر. تحتاج إلى تحديث هاتين الصفحتين من المستندات لاستخدام yarn add بدلاً من yarn upgrade .

لقد كنت أستخدم yarn upgrade-interactive --latest منذ فترة طويلة الآن دون أي عوائق ...

لقد كنت أستخدم ترقية الغزل التفاعلية - الأحدث منذ فترة طويلة الآن دون أي عوائق ...

يبدو زائداً بعض الشيء .. لماذا لا تستخدم فقط أسهل هذه الأوامر ، yarn add ؟ سوبر بسيط.

@ guylepage3 لأنني

lehni ، يجب أن تعكس الوثائق الموجودة على موقع الويب هذا ويجب أن توضح الصفحتان التاليتان استخدام طريقة yarn upgrade-interactive --latest .

@ guylepage3 هذه المحادثة لا تقود إلى أي مكان ولا تساعد. إذا كنت تريد اقتراح تحديث المستندات ، فقد يكون من الأفضل إنشاء مشكلة جديدة خصيصًا لذلك.

آسف إذا كنت تشعر بهذه الطريقة alexdevero. ونعم فعلت بالفعل إذا نظرت أعلاه .. https://github.com/yarnpkg/yarn/issues/1458#ref -issue-332178362

ساعدني هذا: https://www.npmjs.com/package/syncyarnlock

$ yarn upgrade-interactive && syncyarnlock

هذا لا يعمل بالنسبة لي لمساحات عمل الغزل. هل يمكن لأحد أن يلقي نظرة؟

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