جافاسكريبت - دمج تبعيات NPM الخاصة بالتطوير في حزمة ميتا واحدة
هل هناك طريقة لإنشاء حزمة ميتا، والتي package.json:
a) يحتوي على قائمة بالاعتمادات، التي لا تُستخدم لبناء هذه الحزمة؛
b) يجبر NPM على تثبيت هذه التبعيات، عندما يتم إضافة هذا الحزمة الوصفية نفسها إلى المشروع، سواء للإنتاج أو للتطوير؟
المشكلة هي أن لدي بضعة عشرات من الحزم (سواء للإنتاج أو للتطوير) في نموذج البداية الخاص بي، الذي أقوم بنسخه من مشروع إلى آخر. أود أن يكون لدي حزمة خاصة واحدة، والتي بمجرد إضافتها إلى package.json للمشروع، تخبر npm بالحزم الأخرى للإنتاج والتطوير التي يجب تثبيتها. أريد تحسين عملية استخدام نموذج البداية، لأنه عندما أغير شيئًا فيه، عليّ (فعليًا هذه إرادتي، وليست فرضًا) إجراء هذه التغييرات في جميع المشاريع المبنية على أساس هذا النموذج والتي لا تزال قيد التطوير.
لقد تمكنت من إضافة جميع التبعيات التي أستخدمها عادةً إلى قسم production في package.json الخاص بحزمي الرئيسي. ومع ذلك، هناك مشكلتان في هذا النهج:
1. يتم تثبيت الكثير من الحزم غير الضرورية عندما أقوم ببناء الحزمة الشاملة (يجب أن أبنيها لأنها تحتوي على بعض المساعدات في ES6/7);
2. ما زلت مضطرًا لنسخ/لصق قائمة تبعيات الإنتاج في كل مشروع جديد لتوفير معلومات NPM، وما يجب تثبيته على خادم الإنتاج.
الحلول غير المرتبطة بـ npm مرحب بها أيضًا.
الإجابة رقم 1
حسنًا، بدا أنه من السهل جدًا القيام بذلك:
1. أولاً وقبل كل شيء، يُطلب تقسيم جميع الحزم المستخدمة في الهيكل الأساسي إلى مجموعتين - المطلوبة لتشغيل التطبيق (production)، والمطلوبة للبناء وتصحيح الأخطاء (development).
2. إنشاء حزمة الميتا production (meta-prod). محتوى package.json:
...
"dependencies": {
< Here we have the list of production dependencies. >
},
...
قم بتجميعه إذا لزم الأمر وادفعه إلى جيت (أي، جيتهاب).
3. إنشاء حزمة الميتا development (meta-dev). محتوى package.json:
...
"dependencies": {
< Here we have the list of development dependencies. >
< Please note, that this is in the 'dependencies' section, >
< not the 'devDependencies'. >
},
...
ادفعه إلى جيت.
4. قم بإزالة جميع الاعتمادات من package.json الخاص بالنموذج الجاهز واستبدلها بـ:
...
"dependencies": {
"meta-prod": "git+https://github.com/your_account/meta-prod"
},
"devDependencies": {
"meta-dev": "git+https://github.com/your_account/meta-dev"
},
...
هذا كل شيء! سيتم تثبيت الاعتمادات عند قيامك بـ npm install وسيأخذها npm بعين الاعتبار بشكل صحيح كإنتاجية وتطوير. الآن يمكنك استخدام package.json أصغر بكثير وتحديث قائمة المطورين لديك من نقطة واحدة.
العائق الوحيد هو أن npm لا يلتقط تغيير الإصدار عند استخدام الحزمة من git، لذا لتحديث الحزم داخل التطبيق يجب إزالة مجلدات الحزم الوصفية من node_modules وإعادة تشغيل npm install. لإصلاح هذا يمكنك نشر حزمتك على npmjs.com (ويفضل نشرها كحزمة خاصة إذا كنت عميلاً مدفوعاً في npm) وتغيير إصدار الحزمة الوصفية في كل مرة تقوم فيها بتحديثها.
إليك مثال على الحزم الأساسية والحزم الوصفية:
- هيكل أساسي للتطبيق
- ميتا-برود
- ميتا-ديف
