2016-09-08 9 views
5

मैं अलग-अलग माइक्रो सेवाओं का उपयोग करके अपना ऐप बना रहा हूं, प्रत्येक का अपना भंडार और एनपीएम निर्भरता है और यह एक अलग सर्वर पर हो सकता है।एकाधिक एनपीएम रिपॉजिटरीज़ के लिए साझा पैकेज.जेसन कैसे बनाएं

मैं एक वैश्विक package.json फ़ाइल में निर्भरता के सभी डाल करने के लिए एक तरह से जो यूआरएल द्वारा पहुँचा जा सकता रहा हूँ, ताकि रास्ते में, मैं एक साझा निर्भरता संस्करण को अद्यतन कर सकते हैं, सभी विभिन्न सूक्ष्म सेवाओं पर चलने के बिना , और उन्हें एक-एक करके अपडेट करें।

क्या यह संभव है?

उत्तर

7

दुर्भाग्यवश npm पैरेंट पैकेज.जेसन फ़ाइल निर्दिष्ट करने का समर्थन नहीं करता है। ऐसी सुविधा proposed some time ago थी, लेकिन एनपीएम रखरखाव निष्कर्ष निकालने के लिए आया कि इसे बाहरी उपकरणों द्वारा हासिल किया जाना चाहिए।

बेशक आप इस तरह के टूल को स्वयं लिख सकते हैं।

  1. पुस्तकालय जो सभी साझा निर्भरता के साथ package.json फ़ाइल बनाएं: वहाँ संभव aporaches से एक है। इस उदाहरण में इसे shared-deps कहा जाएगा।

  2. merge.js स्क्रिप्ट जो स्थानीय package.json फाइल करने के लिए साझा निर्भरता कहते हैं बनाएँ, और shared-deps पुस्तकालय में जोड़ें:

    const fs = require('fs') 
    
    const localPackageJson = require('../../package.json') 
    const sharedPackageJson = require('./package.json') 
    
    Object.assign(localPackageJson.dependencies, sharedPackageJson.dependencies) 
    
    fs.writeFileSync('../../package.json', JSON.stringify(localPackageJson, null, 2)) 
    
  3. अनुप्रयोग के package.json जो निम्नलिखित हुक के बाद स्थापित इस साझा निर्भरता का उपयोग किया जाएगा में जोड़ें:

    "scripts": { 
        "postinstall": "node ./node_modules/a/merge.js" 
    } 
    
  4. अब, जब आप npm install चलाने के लिए, अपने साझा निर्भरता स्थापित किया जाएगा कपड़ा shared-deps लाइब्रेरी के साथ ईथर, और आपके package.json बाद में अपडेट किया जाएगा।


+0

महान है, धन्यवाद !! –

+0

मुझे समझ में नहीं आता है। यदि इसे पोस्ट-इंस्टॉलेशन में रखा गया है, तो विलय किया जाता है * इंस्टॉल * के बाद किया जाता है, और इसलिए मर्ज किए गए निर्भरता कैसे स्थापित की जाएंगी? क्या इसका मतलब है कि इसे एक पंक्ति में 2 एनपीएम इंस्टॉल करने की आवश्यकता है? –

संबंधित मुद्दे