2012-06-27 4 views
59

कहें कि आप एक लाइब्रेरी lib-a स्थापित करना चाहते हैं जिसमें निर्भरता dep-1 और dep-2 है। यदि lib-a ने अपने पैकेज.जेसन में dep-2 के संस्करण का उपयोग करने के लिए घोषित किया है जो कि पुराना है (कहें कि यह नोड 0.8.0 पर काम नहीं करता है जो अभी बाहर आया है), लेकिन dep-2 की एक शाखा है जो नोड 0.8 के साथ काम करती है .0 - शाखा का नाम node0.8.0एनपीएम के साथ एक पैकेज स्थापित करते समय, क्या आप इसे अपनी निर्भरताओं में से किसी एक के एक अलग संस्करण का उपयोग करने के लिए कह सकते हैं?

तो समीकरण में संकुल हैं:

git://github.com/user-a/lib-a 
git://github.com/user-b/dep-1 
git://github.com/user-c/dep-2 
git://github.com/user-c/dep-2#node0.8.0 

वहाँ एक रास्ता lib-a स्थापित है, लेकिन dep-2#node0.8.0 बजाय dep-2 उपयोग करने के लिए NPM बताने के लिए है?

NPM के साथ आप इस तरह की एक परियोजना की एक विशिष्ट शाखा स्थापित कर सकते हैं:

npm install git://github.com/user-c/dep-2#node0.8.0 

और अगर मैं lib-a की package.json अनुकूलित करने के लिए थे, तो आप इस तरह dep-2#node0.8.0 उपयोग करने के लिए यह बता सकते हैं:

{ 
    "name": "lib-a", 
    "dependencies": { 
    "dep-1": ">= 1.5.0", 
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0" 
    } 
} 

package.json को संशोधित करके आप तो चला सकते हैं

npm install lib-a 

और यह नोड 0.8.0 संगत dep-2 शाखा स्थापित करेगा। लेकिन, इसके लिए मुझे lib-a को संशोधित करने की आवश्यकता है, जो मेरे विशिष्ट मामले के लिए नहीं है। तकनीकी रूप से, मैं lib-a कांटा सकता हूं और उपरोक्त परिवर्तन package.json में बदल सकता हूं। लेकिन मेरे विशिष्ट मामले में, lib-aएक और पुस्तकालय का एक निर्भरता वहाँ के लिए एक रास्ता है, इसलिए मैं इस परियोजना को कांटा करने के लिए यह संदर्भित है, और पर और पर होगा ...

तो सवाल यह है, है lib-a स्थापित करने के लिए एनपीएम को बताएं, और की node0.8.0 शाखा का उपयोग करने के लिए कहें? कुछ ऐसा:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0 

यह शानदार होगा। यदि यह संभव नहीं है, तो यह जानना अच्छा होगा कि मैं परियोजनाओं की श्रृंखला को फोर्क/अनुकूलित करने के लिए खुद को तैयार कर सकता हूं।

उत्तर

42

NPM स्थापित वाक्य रचना:

npm install (with no args in a package dir) 
npm install <tarball file> 
npm install <tarball url> 
npm install <folder> 
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact] 
npm install [@<scope>/]<name>@<tag> 
npm install [@<scope>/]<name>@<version> 
npm install [@<scope>/]<name>@<version range> 
npm i (with any of the previous argument usage) 

ताकि आप अपने मॉड्यूल स्थापित करने के लिए इन तरीकों में से एक का चयन कर सकते हैं।

सबसे आसान तरीका है एक विशिष्ट संस्करण स्थापित करने के मामले इस एक है:

npm install [email protected] 

अधिक जानकारी: https://docs.npmjs.com/cli/install

+6

ऐसा लगता है कि अगर आप निर्भरता पहले स्थापित करते हैं, तो अन्य पुस्तकालयों की आवश्यकता होती है वह निर्भरता स्वयं डाउनलोड नहीं करेगी। इससे समस्या हल हो जाती है! धन्यवाद! –

+1

क्या यह सही है? मैंने npm -g इंस्टॉल/पथ/से/my/fork-with-fix और फिर npm -g इंस्टॉल पैकेज-जो-उपयोग-फोर्क-निर्भरता-साथ-ठीक-ठीक करने की कोशिश की और ... यह अभी भी आधिकारिक संस्करण डाउनलोड करता है। –

+0

'एनपीएम लिंक' पर एक नज़र डालें। – knownasilya

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

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