Yarn: يستغرق ربط التبعيات وقتًا طويلاً

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

هل تريد طلب _ ميزة _ أو الإبلاغ عن _ خطأ _؟
خلل برمجي
ما هو السلوك الحالي؟
عند تثبيت تبعية ، فإن الخطوة الثالثة: linking dependencies تستغرق وقتًا طويلاً ، حتى بالنسبة لحزمة واحدة
إذا كان السلوك الحالي عبارة عن خطأ ، فالرجاء تقديم خطوات إعادة الإنتاج.

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

يرجى ذكر node.js والغزل وإصدار نظام التشغيل.
العقدة: 6.7.0
نظام التشغيل: Windows 10

cat-performance os-windows triaged

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

أنا على جهاز Mac بدون تثبيت أي ماسحات ضوئية لمكافحة الفيروسات. ولكن ما زلت أرى نفس المشكلة ، حيث يستغرق الربط قدرًا كبيرًا من الوقت حتى مع تطبيق angular-js البسيط.

ال 73 كومينتر

أقوم بربط التبعيات يستغرق أكثر من 200 ثانية باستخدام https://github.com/macdja38/pvpsite/blob/master/package.json على نظام التشغيل Windows 10 ، من محرك أقراص الحالة الصلبة مع i7 لائق.

يبدو أن مشكلة الأداء قد تكون ناتجة عن Windows Defender ، مما يؤدي إلى تعطيله في حين أنه من غير المستحسن تقليل 200s إلى مكان أقرب إلى 50.

أعتقد أنه يجب أن يكون هناك حل أفضل من تقليل الأمان.

أكد بعض المستخدمين الآخرين أن تعطيله فقط في الدليل الجذر لمشروعك يعمل ، لكن لا يمكنني تأكيد أن Windows Defender كسر نفسه قليلاً عندما حاولت القيام بذلك.

لدي نفس المشكلة مع git repo مع حوالي 30 تبعيات.
نظام التشغيل Windows 10
عقدة v5.5.0
غزل 0.16.1

image

image

أدى تعطيل Windows Defender إلى تقليل وقت الارتباط بشكل كبير

image

ربما ينبغي "حل" من خلال هذا العلاقات العامة ؟

نعم ، ليس هناك الكثير مما يمكننا القيام به هنا للأسف: (تفحص أجهزة فحص الفيروسات جميع الملفات ، ويحتوي النظام البيئي npm على الكثير من الملفات الصغيرة. عادةً ما يكون للملفات الصغيرة عبء أكبر على NTFS مقارنة بأنظمة الملفات الأخرى مثل EXT4 أو ZFS ، لكنها تتفاقم بسبب برامج فحص الفيروسات.

بعد قولي هذا ، يجب أن يكون الغزل أسرع من npm ، ولن يكون بنفس سرعة نظام Linux أو Mac.

أنا على جهاز Mac بدون تثبيت أي ماسحات ضوئية لمكافحة الفيروسات. ولكن ما زلت أرى نفس المشكلة ، حيث يستغرق الربط قدرًا كبيرًا من الوقت حتى مع تطبيق angular-js البسيط.

لدي هذه المسألة أيضا. استغرق الأمر 174 ثانية على أوبونتو.

بدأت أواجه هذه المشكلة فقط بعد أن قمت بالترقية من 0.17.8 إلى 0.17.19 . ماك بدون مضاد فيروسات.

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

يمكن إعادة إنتاج هذا مع هذه الحزمة. json (على Heroku):

{
  "name": "yarn-link-slowness",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.15.3",
    "lodash": "^4.17.2",
    "react": "^15.4.1",
    "react-dom": "^15.4.1",
    "react-player": "^0.12.1",
    "react-redux": "^4.4.6",
    "react-router": "^3.0.0",
    "react-router-redux": "^4.0.7",
    "react-scripts": "^0.8.4",
    "redux": "^3.6.0",
    "redux-auth-wrapper": "^0.9.0",
    "redux-logger": "^2.7.4",
    "redux-promise-middleware": "^4.2.0",
    "redux-thunk": "^2.1.0"
  },
  "engines": {
    "node": "7.2.1",
    "yarn": "0.17.8"
  }
}

مع الغزل 0.17.8 ، يستغرق التثبيت 37 ثانية. مع الغزل 0.17.10 ، يستغرق التثبيت 97 ثانية. لا توجد تغييرات أخرى (تطبيقات Heroku جديدة في كل مرة).

✨ حرر في 45.10 ثانية.

    "autoprefixer": "6.3.6",
    "babel-core": "6.7.6",
    "babel-jest": "13.0.0",
    "babel-loader": "6.2.4",
    "babel-plugin-transform-class-properties": "6.9.1",
    "babel-plugin-transform-object-rest-spread": "6.8.0",
    "babel-preset-es2015": "6.6.0",
    "babel-preset-react": "6.5.0",
    "bluebird": "3.3.5",
    "cardmask": "github:aj0strow/cardmask#v1.0.0",
    "chai": "3.5.0",
    "classnames": "2.2.5",
    "copy-webpack-plugin": "2.1.3",
    "core-js": "2.4.1",
    "css-loader": "0.23.1",
    "enzyme": "2.3.0",
    "file-loader": "0.8.5",
    "force-case-sensitivity-webpack-plugin": "0.1.1",
    "jest": "13.0.0",
    "jest-cli": "13.0.0",
    "json-loader": "0.5.4",
    "lodash": "4.11.1",
    "moment": "2.13.0",
    "ms": "0.7.1",
    "node-sass": "3.4.2",
    "postcss-loader": "0.9.1",
    "raw-loader": "0.5.1",
    "react": "15.2.0",
    "react-addons-css-transition-group": "15.2.0",
    "react-addons-test-utils": "15.2.0",
    "react-css-transition-replace": "2.0.1",
    "react-dom": "15.0.1",
    "react-redux": "4.4.5",
    "react-router": "2.3.0",
    "react-textarea-autosize": "4.0.3",
    "recompose": "0.20.2",
    "redux": "3.5.1",
    "redux-actions": "0.10.0",
    "redux-thunk": "2.0.1",
    "reselect": "2.5.3",
    "sass-loader": "3.2.0",
    "sinon": "1.17.4",
    "style-loader": "0.13.1",
    "webpack": "1.13.0",
    "webpack-dev-server": "1.14.1",
    "whatwg-fetch": "1.0.0",
    "zxcvbn": "4.3.0"

من فضلك ، هل يمكن لأي شخص أن يشرح بالضبط ما يفعله الغزل في خطوة "ربط التبعيات"؟
لأن العدد الأقصى في هذه الخطوة يختلف من ~ 1000 إلى ~ 65000 لنفس المشروع على أجهزة مختلفة. ماذا يعني هذا الرقم؟

وجود هذه القضية أيضا. يبدو أن إضافة تبعية مع yarn add تؤدي إلى "ربط التبعيات" وتستغرق وقتًا طويلاً. اضطررت للعودة إلى npm في الوقت الحالي.

العقدة: 6.9.2
نظام التشغيل: Windows 10

العقدة: 7.3.0
نظام التشغيل: Windows 10 64
نفس الشيء بالنسبة لي

image

كذلك هنا. روابط 23420 ... شيء ، وتستغرق حوالي دقيقة ونصف في يوم جيد.

غزل 0.19.1
NodeJS 7.3.0
نظام التشغيل Windows 10

يستغرق yarn add moment 105 ثانية. ليس لها تبعيات. : /

التحرير: يؤدي إيقاف تشغيل Windows Defender إلى تقليل الوقت إلى ~ 30 إلى ~ 50 ثانية. حاولت استبعاد الدليل الذي أعمل فيه ، ولكن لا يبدو أن ذلك يساعد.

شغّل للتو نسخة جديدة من تطبيق create-response-app واستغرق الأمر 876.37 ثانية. أتفهم أنه ليس لديك الكثير / أي تحكم في كيفية عمل برنامج مكافحة الفيروسات ، لكن تجربتي مع NPM و CRA كانت أسرع بكثير على Windows.

في نظام التشغيل Windows 10 ، استخدم فقط Ubuntu bash shell كنصيحة عامة.

في نظام التشغيل Windows 10 ، استخدم فقط Ubuntu bash shell كنصيحة عامة.

يعتبر إدخال / إخراج القرص بطيئًا للغاية في نظام Windows الفرعي لنظام Linux ، وهو قيد معروف في الوقت الحالي

لكن تجربتي مع NPM و CRA كانت أسرع على Windows.

JeffBaumgardt -

@ Daniel15 ربما يجب أن يكون كذلك ، لكنه ليس كذلك. كانت عمليات تثبيت وإلغاء تثبيت العقدة أصغر بالنسبة لي. لذلك سأفعل npm add <packages> --save-dev ، وحذف yarn.lock وتشغيل الغزل وهذا أسرع من تشغيل yarn add <packages> -D مرة واحدة. الآن قبعة الجميع على الغزل ، بالطبع لا أريد حذف القفل وإجبار الجميع على ترقية الحزمة الخاصة بهم. بدلاً من ذلك ، كان ما يلي رائعًا:

ccechobnet

لأي شخص على windows 10 + windows defender

  1. أولا انقر فوق الإعدادات

    image

  2. انتقل لأسفل إلى الاستثناءات

    image

  3. قم بتشغيل yarn cache dir للحصول على موقع مجلد ذاكرة التخزين المؤقت

    • أضف مجلد ذاكرة التخزين المؤقت هذا إلى قائمة الاستبعاد
    • أضف مجلد node_modules الخاص بالمشروع إلى قائمة الاستبعاد
  4. تسريع مشروع رد الفعل × 3-10

SleeplessByte أو يمكنك ببساطة إضافة yarn و node إلى العمليات المستبعدة.

ليست مجرد مشكلة على النوافذ. لقد رأيت أوقات ارتباط مروعة على جهاز Mac Pro الخاص بي.

نظام التشغيل: OS X 10.11.6 (El Capitan)
العقدة: 7.6.0
الغزل: 0.20.3

Imgur

أستطيع أن أؤكد أنه بطيء جدًا على نظام التشغيل Mac 10.12.3 أيضًا. لا علاقة لها بالنوافذ.

ويبدو أن إعدادي _way_ أبطأ من غيره في هذا الموضوع. يحاول الغزل أحيانًا ربط حوالي 600.000 ملف في المشاريع الصغيرة. قد يستغرق هذا أكثر من 30 دقيقة. أحاول حاليًا باستخدام ذاكرة تخزين مؤقت نظيفة وليليًا (الإصدار 0.22.0-20170226.1626). أنا أستخدم التسجيل الرسمي بالإضافة إلى سجل خاص مخصص لبعض الحزم المحددة النطاق. ومع ذلك ، لا يعاني زملائي من هذه المشكلة ، لذلك لا أعتقد أن المشكلة هي السجل الخاص المخصص (وقد انتهى جلب الحزم بالفعل على أي حال). لدينا أيضًا بعض الملفات النسبية باستخدام بروتوكول path: في package.json .

لدي الكثير من المشاكل أثناء تثبيت https://github.com/google/material-design-icons والذي يحتوي على الكثير من الملفات الصغيرة التي تبدو مزعجة للآخرين أيضًا (https://github.com/google/ أيقونات تصميم المواد / قضايا / 518). لا أعرف ما إذا كان أجهزتي معطلة عند التعامل مع الكثير من الملفات الصغيرة أو شيء من هذا القبيل أو ما إذا كان هذا مرتبطًا على الإطلاق. مرة أخرى ، لا يواجه زملائي الكثير من المشاكل في تثبيت https://github.com/google/material-design-icons كما أفعل.

تحديث

لست متأكدًا ... يبدو أن تثبيت حزمة مع file: يضع وحدة في ذاكرة التخزين المؤقت تحتوي على node_modules/ وأشياء أخرى. هذه _حقيقة_ مشكلة إذا كان لديك عدة أمثلة تحتوي جميعها على node_modules/ الخاصة بهم. يبدو أنه تم تجاهل .npmignore ، وما إلى ذلك من أجل تثبيتات file: . ربما يتلخص هذا في https://github.com/yarnpkg/yarn/issues/2165 ، إذا كان الحل هو عدم تخزين الملفات المحلولة محليًا على الإطلاق. إذا فتحت ذاكرة التخزين المؤقت ( $ yarn cache dir ) وبحثت عن الوحدات النمطية لماذا يتم التثبيت باستخدام file: وتحتوي على دليل node_modules أو أدلة أخرى كبيرة ، يمكنني تسريع linking phase بإزالة هذه الأدلة يدويًا. الآن يبدو أن كل شيء يتم تثبيته بسرعة جيدة.

[3/4] Linking dependencies...
Done in 947.71s. 

اضطررت إلى الانتظار هذا القدر من الوقت لإضافة أي حزمة جديدة بـ yarn add ...
Win7 / w الغزل v0.21.3
حصلت على حزمة material-design-icons في تطبيقي.
أعتقد أن هذا مرتبط https://github.com/yarnpkg/yarn/issues/990

@ kuncevich كل شيء يعمل بشكل جيد من نهايتي ، أثناء وقت تشغيل الغزل ، أضف مدير

kuncevic قد تتأثر https://github.com/yarnpkg/yarn/pull/2958

يمكن للغزل دائمًا نسخ كل ملف node_modules لكل عملية.

asolopovas في حالتي هو node.exe مثل 10-26 % :

لا يمثل جهاز AV الخاص بي مشكلة حتى لو قمت بإيقاف تشغيله تمامًا ، لا يمكنني رؤية أي تحسينات في سرعة الغزل.

العقدة -v 6.9.2

kuncevic قم بتحديث العقدة الخاصة بك إلى 7 وتحقق مما إذا كان ذلك يجعل الأمور أسرع ، وإلا فإن vbfox يشير إلى الاتجاه الصحيح.

يمكن للغزل دائمًا نسخ كل ملف في node_modules لكل عملية.

vbfox هل يمكن أن تشرح لماذا؟ أبحث في الإخراج المطول للغزل ووجدت أنه يتم قضاء معظم الوقت تقريبًا في إنشاء الدلائل ونسخ الملفات ، حيث يبدو أنه يفعل كل منها على حدة ، بدلاً من إنشاء دليل لكل _حزمة_ ثم نسخ الحزمة بأكملها ، والتي يجب أن تكون أسرع قليلاً ، أو حتى مجرد ربط جميع الحزم التي قد تكون أسرع مرة أخرى. هل هذه ليست آمنة للقيام بها؟

@ danpalmer تعمل مرحلة الربط بشكل أساسي في 3 خطوات كبيرة:

  1. ابحث عن كل ملف يجب أن يكون في node_modules
  2. تحقق من هذه القائمة مقابل ما هو موجود بالفعل وابحث عن ما يجب نسخه من ذاكرة التخزين المؤقت إلى node_modules
  3. قم بالنسخ

نظرًا لوجود خطأ في libuv / nodejs (يتم استخدام utime بواسطة الغزل والخطأ هو أنه يضبط المللي ثانية على صفر) ، دائمًا ما تكون الملفات المنسوخة بواسطة الغزل في تشغيل سابق مختلفة (الإصدار الموجود في ذاكرة التخزين المؤقت يحتوي على الوقت العادي المعدل ولكن جميع الملفات في node_modules لها إصدار من صفر مقابل ملي ثانية) لذا فإن المرحلة 2 تشير دائمًا إلى أن كل شيء قد تغير.

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

فيما يتعلق بنسخ الحزمة بأكملها ، فهي ليست عملية موجودة على أنظمة الملفات الحالية AFAIK ، فجميعها تعمل على مستوى الملف.
أفضل النوافذ التي توفرها هي FileCopy API (لدي علاقات عامة لاستخدامها في الغزل: https://github.com/yarnpkg/yarn/pull/2960) ولكنها أسرع قليلاً من استخدام واجهة برمجة تطبيقات دفق nodejs الأصلية.

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

تجربتي مع الترقية إلى Node 7.8.0 : https://github.com/yarnpkg/yarn/issues/990#issuecomment -290288375

1. Find every file that need to be in node_modules
2. Check this list versus what is already there and find what need to be copied around from cache to node_modules
3. Do the copy

بالنظر إلى أن الناس في معظم الأوقات يعيدون ربط مساحات من المكتبات عند التبديل بين الفروع - ربما هناك طريقة أفضل للقيام بذلك؟

هل يمكنك إنشاء معرّف فريد لكل إصدار node_modules ثم ربط sym الدليل بالكامل من ذاكرة تخزين مؤقت؟ بهذه الطريقة ، فإن تبديل الفروع ذهابًا وإيابًا هو مجرد ربط رمزي مختلف node_modules

من المؤكد أنك ستكتب الكثير على القرص لأنك الآن تخزن مؤقتًا كل إصدار من node_modules تواجهه ، ولكن هل يمكن أن تكون هناك تحسينات هناك لربط sym بالدلائل بحيث تكون أنت فقط حقًا تخزين شجرة من روابط سيم؟

سامحني لكوني ساذجًا ، فأنا لست الأكثر تعليماً عندما يتعلق الأمر بأنظمة ملفات Windows وحتى أقل من ذلك ، ولكن يسعدني أن أتعمق في هذا الأمر ، كتدريب تعليمي ، ومحاولة تقديم إثبات لمفهوم هذه الفكرة إذا لم يكن معيبًا بشكل واضح بأي شكل من الأشكال.

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

أنا أيضًا كان لدي وقت طويل جدًا لإنشاء تطبيق يتفاعل مع الغزل
خادم ويندوز 2012
العقدة 7.9.0
غزل 0.22
حرر في ٥٥٤.٠٨.

ولكن في حالات أخرى يكون أسرع بكثير إذا لم يتم تضمين تثبيتات React

لا ألاحظ وقت ربط طويل مؤخرًا. ادارة
الغزل - v0.23.2
العقدة - 6.10.2 أو 7.9.10 (باستخدام nvm للتبديل)

جربت هذا على ماك وأرشلينوكس (مانجارو)

يمكنني أن أؤكد أن إضافة العقدة والغزل إلى استثناءات Windows Defender قللت من وقت الربط بحوالي 60٪ على جهاز windows الخاص بي.

+1

[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 180.22s.

التحول إلى العقدة 7.9.0 لم يسرع الأمر بالنسبة لي. أدت إضافة 'yarn' و 'node' و 'npm' إلى windows defender (مع ملحقات exe وبدونها ، لست متأكدًا مما هو مطلوب) إلى تسريعها 3x بالنسبة لي ، ولكنها لا تزال أطول بنسبة 50٪ من تثبيت npm.

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

إضافة تجربتي - أدت إضافة node.exe / yarn.exe إلى قائمة استثناءات Windows defender إلى خفض وقت تثبيت الغزل إلى النصف (من 60 إلى 30 ثانية).

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

yarn install v0.24.5
[1/4] Resolving packages...
[2/4] Fetching packages...
warning [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 338.20s.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty
  "dependencies": {
    "autoprefixer": "^6.7.7",
    "axios": "^0.16.1",
    "babel-core": "^6.24.1",
    "babel-loader": "7.x",
    "babel-preset-env": "^1.4.0",
    "coffee-loader": "^0.7.3",
    "coffee-script": "^1.12.5",
    "compression-webpack-plugin": "^0.4.0",
    "css-loader": "^0.28.0",
    "element-ui": "^1.3.3",
    "extract-text-webpack-plugin": "^2.1.0",
    "file-loader": "^0.11.1",
    "glob": "^7.1.1",
    "js-yaml": "^3.8.3",
    "node-sass": "^4.5.2",
    "path-complete-extname": "^0.1.0",
    "postcss-loader": "^1.3.3",
    "postcss-smart-import": "^0.6.12",
    "precss": "^1.4.0",
    "rails-erb-loader": "^5.0.0",
    "rails-ujs": "^5.1.0",
    "sass-loader": "^6.0.3",
    "style-loader": "^0.16.1",
    "turbolinks": "^5.0.3",
    "vue": "^2.3.0",
    "vue-loader": "^12.0.2",
    "vue-router": "^2.5.3",
    "vue-template-compiler": "^2.3.0",
    "webpack": "^2.4.1",
    "webpack-manifest-plugin": "^1.1.0",
    "webpack-merge": "^4.1.0"
  },
  "devDependencies": {
    "element-theme": "*",
    "element-theme-default": "^1.3.3",
    "eslint": "^3.19.0",
    "eslint-config-airbnb": "^14.1.0",
    "eslint-plugin-import": "^2.2.0",
    "eslint-plugin-jsx-a11y": "^4.0.0",
    "eslint-plugin-react": "^6.9.0",
    "nodemon": "^1.11.0",
    "webpack-dev-server": "^2.4.5"
  }

:(

إضافة +1 في منتصف صيف 2010 MacBook Pro (Sierra 10.12.4) باستخدام الغزل 0.24.5 ، والعقدة 7.10.0 ، و npm 4.2.0:

λ إضافة غزل bootstrap-sass
إضافة الغزل v0.24.5
[1/4] حل الحزم ...
[2/4] جلب الحزم ...
[3/4] 🔗 ربط التبعيات ...
[4/4] 📃 بناء عبوات جديدة ...
النجاح المحفوظة lockfile.
تم حفظ تبعية جديدة واحدة.
└─ [email protected]
✨ حررت في 123.52 ثانية.

"dependencies": {
    "@angular/animations": "^4.1.3",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/material": "^2.0.0-beta.5",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/router": "^4.0.0",
    "bootstrap-sass": "^3.3.7",
    "core-js": "^2.4.1",
    "font-awesome": "^4.7.0",
    "material-design-icons": "^3.0.1",
    "materialize-css": "^0.98.2",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
},
"devDependencies": {
    "@angular/cli": "1.0.1",
    "@angular/compiler-cli": "^4.0.0",
    "@types/jasmine": "2.5.38",
    "@types/node": "~6.0.60",
    "codelyzer": "~2.0.0",
    "jasmine-core": "~2.5.2",
    "jasmine-spec-reporter": "~3.2.0",
    "karma": "~1.4.1",
    "karma-chrome-launcher": "~2.0.0",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^0.2.0",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.0",
    "ts-node": "~2.0.0",
    "tslint": "~4.5.0",
    "typescript": "~2.2.0"
}

العودة إلى تثبيت npm تم إصلاحه بالنسبة لي .. كنت أحصل على - u'stream ': u' [3/4] ربط التبعيات في الغزل ولا يوجد خطأ في NPM ..

ربما حدث خطأ ما في أحدث تصميم

تشغيل هذا من خلال Docker.

iwarner npm 5.0 هو اختيار جيد.

أدير الغزل في Vagrant (Ubuntu Xenial) وبواسطة Jenkins. هناك نوعان من المشاريع الفرعية مع package.json.
npm -v 3.10.10
عقدة -v 6.10.1
تثبيت الغزل v0.21.3

لقد انتقلنا من npm إلى الغزل منذ بعض الوقت ، لأننا واجهنا مشكلة انتهاء الوقت (4 ساعات لم تكن كافية) لتثبيت npm.

يعمل الغزل الآن حوالي 30٪ من الوقت ، ولكن في 70٪ من الوقت نحصل على مهلة 4 ساعات في وقت ما قد يتم تثبيت الخيط الأول ، أو الثاني ، أو قد تنتهي مهلة أثناء إجراء اختبارات الوحدة (دعابة).

هذه نسخة مكررة من https://github.com/yarnpkg/yarn/issues/990 ، هناك مخطط مقارنة ويبدو أن أحدث إصدارات Yarn حققت بعض التقدم الجيد هناك.
إذا كانت لا تزال تمثل مشكلة ، فيرجى تقديم مشكلة جديدة بخطوات repro ومقارنة مع أحدث npm

success Saved lockfile.
Done in 1737.79s.

نظام التشغيل Ubuntu 16.04.0
i5 ، 8 جيجا رام

:(

Windows 10 v 1709 + SSD + PowerShell + Node 6.12.2:
كان تثبيت الغزل سريعًا حتى الحزمة الأخيرة ، ويبدو أنها عالقة في أمر التثبيت المسبق.
اتبعت التعليمات هنا لإضافة استثناءات لـ windows defender ، ولكن أيضًا قمت بفحص مصدري لمصدر٪ USERPROFILE٪ مما أدى إلى إبطائه بشكل كبير. تم السحب في ج: لقد كانت أكوام أسرع.

أي حل لمنصة أوبونتو؟ يجب أن أفكر حرفيًا مرتين قبل إضافة حزمة.

Ubuntu سريع جدًا بالنسبة لي ، ولا يوجد بطء على الإطلاق.

في يوم الجمعة ، 23 فبراير 2018 ، 11:13 بسنت بصرة ، كتب [email protected] :

أي حل لمنصة أوبونتو؟ أنا حرفيًا يجب أن أفكر مرتين من قبل
إضافة حزمة.

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/yarnpkg/yarn/issues/1496#issuecomment-367897260 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AAcMheTtAYOsXcrnej_f2F8bY5D3nDT2ks5tXizngaJpZM4Kh3OZ
.

هذا مزعج للغاية. أنا حرفيا تغيير سطر واحد في وحدة نمطية نشرها تحت نسخة جديدة و yarn add module استغرق أكثر من 5 دقائق.

سيكون من الأسرع فقط تحديث حزمتي يدويًا باستخدام محرر نصوص

أواجه هذه المشكلة أيضًا:

success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ @material-ui/[email protected]
info All dependencies
└─ @material-ui/[email protected]
Done in 93.43s.

نظامي هو Linux manjaro 4.14.31-1-MANJARO #1 SMP PREEMPT Wed Mar 28 21:42:49 UTC 2018 x86_64 GNU/Linux

NodeJS: v9.9.0
الغزل: v1.5.1

أيضًا بطيء جدًا بالنسبة لي Done in 254.32s.

عقدة v8.10.0
نانوثانية في الدقيقة 5.6.0

OSX 10.11.6 (15G19009)

لقد عدت مرة أخرى إلى [email protected] حيث أن الأشياء تعمل بشكل رائع.

نحن نستخدم ميزة ذاكرة التخزين المؤقت غير المتصلة بالإنترنت لتجنب هذه المشكلة في معظم الأوقات ، ولكن بمجرد تغيير package.json أو yarn-lockfile ، فإننا نعود إلى هذه المشكلة. يستغرق الربط 10 دقائق على جهاز Linux الخاص بنا. لا أعتقد أن هذا خاص بالنوافذ.

هذه بالتأكيد ليست مشكلة Windows فقط (والتي يجب أن تكون واضحة من جميع المنشورات من الأشخاص على أجهزة بخلاف Windows)!

أنا على macOS High Sierra 10.13.4 ، باستخدام العقدة 10.1.0 (npm 5.6.0) والغزل 1.6.0. باستخدام الغزل ، استغرق تثبيت التبعية 40 ثانية تقريبًا. لقد تحولت إلى npm واستغرق الأمر حوالي 10 ثوانٍ. سألتزم بـ npm في الوقت الحالي.

نفس الشيء بالنسبة لمربع سنتوس 7. أي تحديثات على هذا؟
الغزل: v1.7.0
npm: v5.7.1

هذا يحدث لي في 1.9.2 على نظام التشغيل Mac على العقدة 10

بالنسبة لي على macOS HighSierra ، كان Avast FileShield يسبب المشكلة. لقد أضفت الغزل القابل للتنفيذ كمسار مستبعد ، باستخدام which yarn . يبدو الأمر جيدًا الآن ، سأقدم تحديثًا إذا عاد.

هذا يحدث لي في 1.9.2 على نظام التشغيل Mac على العقدة 10

كذلك هنا. الغزل 1.9.2 ، العقدة 10.6.0 على هاي سييرا.

@ bestander هذه ليست مشكلة Windows. يمكنني إعادة النسخ على جهاز Mac الخاص بي باستخدام Yarn 1.9.4. يجب إعادة فتح هذه المشكلة.

davidgoli ، من الأفضل فتح مشكلة جديدة ، فهذه مشكلة جديدة ويجب فرزها بشكل منفصل

الغزل بطيء جدًا بالنسبة لأي بيئة قمت بتشغيلها. دبيان ، ماك ، ويندوز. كان الإصدار الجديد مفتوحًا؟ أو RFC الذي يتخلص من node_modules سيحل هذا؟

لدي نفس المشكلة ، انتقل بالفعل إلى npm ولكن لا يزال هناك خطأ

لدي أيضًا نفس المشكلة مع الغزل. أي حل وجد؟

هذه نسخة مكررة من # 990 ، يوجد مخطط مقارنة ويبدو أن أحدث إصدارات Yarn حققت بعض التقدم الجيد هناك.
إذا كانت لا تزال تمثل مشكلة ، فيرجى تقديم مشكلة جديدة بخطوات repro ومقارنة مع أحدث npm

هذه ليست نسخة مكررة ، هذه المشكلة ليست فقط حول Windows. فتح قضية جديدة سيؤدي إلى فقدان السياق.

لدي نفس المشكلة!

yarn install
yarn install v1.16.0
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
[###############################################---------------------------------------------------------------------------------------------] 22778/67399
Done in 179.59s.

MacOS / Docker

المتشرد 2.2.4
الضيف: Ubuntu 18.10 (GNU/Linux 4.18.0-25-generic x86_64)
المضيف: MacOS 10.14.5 Mojave

الغزل 1.16.0
npm 6.9.0

MacBook Pro (Retina ، 13 بوصة ، أوائل 2015)
المعالج 2.7 جيجاهرتز Intel Core i5
ذاكرة 16 جيجا بايت 1867 ميجا هرتز DDR3

yarn install v1.16.0
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 1552.45s.

في الواقع لا يمكنني تشغيل yarn install بدون خسارة أكثر من 25 دقيقة من الإنتاجية. إنه أمر سخيف. لا أشتري أن هذه مشكلة في Windows. يبدو لي أنه من المحتمل جدًا وجود بعض المشاكل عند التشغيل في بيئة افتراضية. ربما يتعلق الأمر بالمجلدات المتزامنة / فحص حالة الملف على نظام التشغيل الضيف؟

غزل v1.17.3
عقدة v10.16.3
نانوثانية في الدقيقة 6.9.0

شبابيك

لقد حاولت وضع موقع مجلد مشروع التطبيق الخاص بي في نفس قسم القرص مثل yarn cache dir .
مخبأ الغزل دير -> C: المستخدمونAppDataLocalYarnCachev4

النتائج:
موقع قديم -> D: myApp Done in 747.17s.
موقع جديد -> C: myApp Done in 488.97s.

C و D هما نفس القرص الفعلي.

ماك

ومع ذلك ، فإن Mac أسرع من Windows Done in 121.37s

أعتقد أن عنق الزجاجة هو سرعة قراءة / كتابة القرص؟

OS X 10.15
غزل v1.22.4
عقدة v12.13.0
npm v6.12.0

ما زلت أعاني من هذا. يقع المشروع في صورة قرص مشفر مركبة. يستغرق تثبيت حزمة واحدة عدة دقائق باستخدام package.json صغير نسبيًا. لم يتم قياسها ولكن npm تشعر أنها أسرع بكثير.

تحرير: تبين أن تغيير مجلد ذاكرة التخزين المؤقت الافتراضي الخاص بـ yarn ليكون على نفس وحدة التخزين المشفرة قد أصلح هذا الأمر بالنسبة لي.

لقد أصبت بهذا أيضًا وأنا أركض:

نظام التشغيل: Ubuntu 18.04.2
الغزل: 1.22.4
العقدة: 14.7.0
NPM: 6.14.7

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