حجم المجلد node_modules ليس مشكلة. إنه امتياز

أفكاري في مناقشة حجم مجلد node_modules

اعتدت أن أغضب منnode_modulesحجم المجلد. كيف يمكن أن يكون حجم تطبيق JavaScript 100 أو 200 ميجابايت دون أن أضيف أي سطر من التعليمات البرمجية؟ أنا فقط أركضnpx create-react-app todolistوقمت بتنزيل 218.7 ميجا بايت منأشياء! (لقد راجعته الآن ، هذا رقم حقيقي).

عندما تفكر في حجم node_modules ، فكر في ملايين ساعات العمل التي وضعناها نحن المبرمجين فيها.

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

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

هل 200 ميغا بايت كبيرة جدًا في عصر التخزين السريع لطلب TB؟

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

أخذت مثال إنشاء التطبيق. ماذا يوجد في تلك الـ 200 ميغا بايت؟

لتبدأ ، يحتوي تطبيق create-react-app على

  • مترجم (بابل)
  • حزمة (Webpack)
  • أداة مصغرة لرمز
  • لينتر (ESLint)
  • أداة خط أنابيب التصميم (SCSS)
  • خادم تطوير مع إعادة تحميل مباشرة
  • عداء اختبار (جست)

إذا كنت تريد كتابة تطبيق Mac أو iPhone ، فيجب عليك التثبيتXcode، IDE المقدم من Apple.Xcodeهو (انتظر ..) حجمه 14 جيجابايت تقريبًا. هذا هو 70 ضعف حجم العقدة_الوحدات. من المؤكد أننا نقارن بين شيئين مختلفين ، لكن node_modules تحتوي على كل ما تحتاجه لبدء العمل على الكود الخاص بك. يمكنك إقرانه برمز VS بحجم 200 ميجابايت ، أو مع نص Sublime بحجم 30 ميجابايت - لا يهم ، لا أحد مطلوب بشكل صارم (بينما لا يمكنك إنشاء تطبيق iOS / macOS بدونXcode).

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

لقد قرأت أشخاصًا يتساءلون كيف يمكنهم تدقيق قاعدة الشفرة لمشكلات الأمان أو مشاكل أخرى إذا كانت تطبيقاتنا تعتمد على الكثير من التعليمات البرمجية التي كتبها آخرون.

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

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

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

على أي حال: تحيا ،node_modules!


المزيد من دروس js: