الغزل 2 - مع برولوج والمكونات الإضافية

صدر الغزل - مدير الحزم للعقدة - الإصدار الثاني . ويبدو أن اللاعبين شرعوا بجدية في تغيير الوضع الراهن في النظام البيئي للعقدة ، وحتى بشكل عام في مديري الحزم. حذف جميع الصور حول node_modules ممرضة جيجابايت ، وإزالة yarn installمن البرامج النصية CI ، نبدأ الارتباك جافا سكريبت أخرى كبيرة. بالمختصر:

  • أصبح وضع Plug'n'Play افتراضيًا ، وأصبحت وحدات node_modules ثانوية من خلال المكون الإضافي.
  • لقد صنعنا مكونًا إضافيًا وسير عمل من أجل monorep - ربما لن تكون هناك حاجة إلى lerna.
  • لقد قاموا ببناء غلافهم الصغير بحيث يمكن تشغيل البرامج النصية للحزمة بدون تلك المتداخلات في Windows.
  • تمت إضافة مقدمة للتحقق من القواعد بين مساحات العمل.
  • تغسل npx مرة أخرى إلى أسفل.
إذا كنت لا ترغب في تحديث جميع مشاريعك ، فقم فقط بتشغيل yarn policies set-version ^1(انظر legacy.yarnpkg.com/en/docs/cli/policies ) في المستودعات التي يجب أن تظل على Yarn 1 وارتكب النتيجة. ثم سيستخدم Yarn ثنائيات Yarn 1 المحلية بدلاً من الثنائيات العالمية ، لذلك سيستخدم الجميع في الفريق نفس الإصدار!


بشكل عام ، يمكن تتبع اتجاهين للتطوير: أ) الحد الأقصى من استنساخ البيئة و ب) التحرك نحو منصة لإدارة الحزمة.

فيما يتعلق بالنقطة الأولى ، كان الغزل دائمًا يقود - في الواقع ، كان هذا هو سبب ظهوره مرة واحدة ، والضغط على الفور على npm (تذكر ، ثم تشغيل npm يمكن أن يعطي نتائج مختلفة ، لأن ملف القفل في عالم العقدة هو ميزة الغزل) . على الرغم من أنني تحولت إليه شخصيًا بسبب الخط الغاضب في سجلات npm .

لكنهم قرروا الآن ، إذا جاز التعبير ، الدفع إلى أقصى حد. عند إضافة حزمة ، تتم إضافتها (وجميع تبعياتها) ، في شكل أرشيف مضغوط ، إلى ذاكرة التخزين المؤقت ، في مجلد .yarn في مجلد الحزمة (مثل .git). بدلاً من node_modules ، يتم إنشاء ملف .pnp.js ، والذي يعالج عمليات استيراد الوحدة النمطية. هناك نتيجتان مهمتان:

  1. يمكنك إضافة ذاكرة التخزين المؤقت هذه مباشرةً إلى git - وبعد ذلك بعد الخروج ، ستحصل على الفور على الإصدار الحالي من التطبيق مع جميع التبعيات.
  2. يعمل رابط الغزل بشكل أفضل - الآن تتم معالجة تبعيات الأقران بشكل صحيح أيضًا

أما بالنسبة للمنصة ، فقد تحول الرجال إلى بنية البرنامج المساعد (أي الغزل بشكل أساسي كواجهة برمجة تطبيقات ، ثم فيما بعد CLI) وذكروا أنهم يريدون التخلص من العقدة نفسها ، مما يجعل الغزل حلاً عامًا لبناء مديري الحزم الخاصة بك .

تبدو مثيرة للاهتمام وطموحة ومتغطرسة قليلاً. دعونا نرى ما إذا كان بإمكانهم التأقلم أو التوقف بالفعل في المرحلة الأولى من PnP.

على أي حال ، سأحاول نقل مشروعنا إلى الغزل 2 ، إذا نجح - سيكون لطيفًا. كيف حالك؟

UPD: حول المقدمة في العنوان ليس مزحة ، سيكون من الممكن كتابة قواعد التحقق من مساحات العمل عليها ، next.yarnpkg.com/features/constictions

Next - مقتطف من الإعلان الرسمي .

الأكثر أهمية


تمت إعادة تصميم الإخراج في وحدة التحكم لتحسين قراءة
أوامر CLI ( yarn add...) الآن فكر في vorkspeysy
يمكنك التخلص من yarn installداخل مستودعها
من npx البديل الأقل خطورة: yarn dlx، لتشغيل أشياء لمرة واحدة
تشغيل الأمر تشغيل على جميع vorkspeysah مع yarn workspaces foreach
حزم Mankipatching من خلال سجل التصحيح:
روابط إلى الحزم المحلية من خلال بروتوكول البوابة الإلكترونية:
سير عمل جديد لتحرير مساحات العمل بشكل طبيعي
فحص تصحيحي وإصلاحات لمساحة العمل (تم تضمين PROLOG)

و أيضا ...


لا يتم إنشاء الحزم إلا إذا لم يكن هناك أي شيء على الإطلاق
يمكن تشغيل / إيقاف تشغيل البنيات على الإطلاق ،
ويتم تنفيذ البرامج النصية في
عمل تبعيات الأقران العامة على مستوى الصدفة حتى من خلال رابط غزل
أصبح ملف القفل عاديًا YAML
كل الكود الآن على دعم TypeScript
Plug-in

كسر التغييرات


أصبحت الإعدادات موحدة.
يجب أن تتوافق الحزم مع حدودها.
ولم تعد معتمدة على
الحزم . يتم تخزين الحزم في أرشيفات للقراءة فقط.

سجل التغيير التفصيلي هنا ، تعليمات التحديث هنا .

هل سيكون من الصعب الانتقال إلى Yarn 2؟


بفضل مختبرينا التجريبيين ودعمنا الشامل للنظام البيئي ، خففنا الكثير من الألم المرتبط بهذه الترقية الهائلة. سيخبر دليل النقل بمزيد من التفصيل ، ولكن بشكل عام ، أثناء استخدامك لأحدث إصدارات الأدوات (ESLint و Babel و TypeScript و Gatsby وما إلى ذلك) ، يجب أن يكون كل شيء طبيعيًا.

ولكن هناك شيء واحد مهم: لا يمكن استخدام Flow و React-Native مع Plug'n'Play (PnP) في الوقت الحالي . نحن نبحث عن طرق للعمل مع فرقهم لجعلها تعمل. في الوقت الحالي ، يمكنك البقاء على Yarn 1 أو استخدام المكون الإضافي node_modules ، والذي يوفر التوافق العكسي لتسهيل الانتقال (لا يزال قيد التشغيل ، قد يكون هناك أخطاء). المزيد هنا .

ماذا سيحدث للنسخة القديمة؟


سيتم إصدار Yarn 1.22 الأسبوع المقبل. بعد ذلك ، سيدخل فرع 1.x رسميًا في الوضع المباشر - أي لن تكون هناك إصدارات بخلاف إصلاحات الثغرات الأمنية. سيتم إجراء الميزات الجديدة حصريًا في Yarn 2. عمليًا ، هذا يعني:

  • سوف يغادر المستودع القديم (yarnpkg / yarn) إلى yarnpkg / legacy ليعكس حالته المتبقية. سيكون مفتوحًا لبعض الوقت ، ولكن على الأرجح سنقوم بأرشفته في غضون عام أو عامين.
  • لن تتم إعادة تسمية المستودع الجديد إلى yarnpkg / yarn ، حيث سيؤدي ذلك إلى كسر العديد من الروابط القديمة. في المستقبل المنظور ، سيبقى في yarnpkg / berry .
  • الموقع القديم سيذهب إلى legacy.yarnpkg.com ، الموقع الجديد (الآن next.yarnpkg.com) سينتقل إلى النطاق الرئيسي yarnpkg.com
  • سيتم تحديث حزمة الغزل على npm على النحو التالي:

    • ستظهر علامة التوت دائمًا في الإصدار 2.x الأخير
    • legacy 1.x
    • latest legacy , berry. , Yarn 2.
  • - Node Yarn 2 Node 14, 2020 . yarnPath Yarn 2 .
  • نحن ننتقل إلى إجراءات GitHub الأوتوماتيكية بالكامل وبعض مستودعات الدفعة (على وجه الخصوص Homebrew و Chocolatey وما إلى ذلك) لم يتم تثبيتها بعد. ونتيجة لذلك ، سيحصلون على تحديث Yarn 2 في وقت لاحق عن الباقي. نوصي باستخدام إصدار مجموعة الغزل (أو إصدار مجموعة سياسات الغزل على الغزل 1).

نتوقع اكتمال معظم هذه التغييرات بحلول 1 فبراير 2020.

Source: https://habr.com/ru/post/undefined/


All Articles