एक पैकेज पर एक git URL का उपयोग करके शाखा या टैग पर निर्भर करें।


399

मान लीजिए कि मैंने बगफिक्स के साथ एक नोड मॉड्यूल को कांटा है और मैं अपने निश्चित संस्करण का उपयोग करना चाहता हूं, निश्चित रूप से एक फीचर शाखा पर, जब तक कि बगफिक्स को विलय और जारी नहीं किया जाता है।

मैं अपने निश्चित संस्करण का संदर्भ कैसे dependenciesदूंगा package.json?

जवाबों:


569

से NPM डॉक्स :

git://github.com/<user>/<project>.git#<branch>

git://github.com/<user>/<project>.git#feature\/<branch>

एनपीएम संस्करण 1.1.65 के अनुसार, आप यह कर सकते हैं:

<user>/<project>#<branch>

130
एनपीएम 1.1.65 के अनुसार, जीथब URL अधिक संक्षिप्त हो सकता है user/projectnpmjs.org/doc/files/package.json.html आप इस शाखा को संलग्न कर सकते हैं जैसेuser/project#branch
dantheta

2
git://github.com/<user>/<project>.git#feature/blahकाम किया, लेकिन <user>/<project>.git#feature/blahनहीं ... शायद उनके regex को ध्यान में रखने के लिए और अधिक उन्नत होने की आवश्यकता है feature/blah। यह v1.4.28
npm

5
आप संस्करण संख्या कैसे शामिल करते हैं?
रिचर्ड

1
@hurrymaplelad क्या मैं पुल अनुरोध के लिए ऐसा कर सकता हूं? यदि हां, तो कमांड कैसे है?
राउंड्रोबिन

3
अद्यतित NPM डॉक्स लिंक docs.npmjs.com/files/package.json#github-urls
kellen

136

प्रति @ दंतेता की टिप्पणी:

एनपीएम 1.1.65 के अनुसार, जीथब URL अधिक संक्षिप्त उपयोगकर्ता / परियोजना हो सकता है। npmjs.org/doc/files/package.json.html आप उपयोगकर्ता / परियोजना # शाखा की तरह शाखा संलग्न कर सकते हैं

इसलिए

"babel-eslint": "babel/babel-eslint",

या jscs पर v1.12.0 टैग के लिए:

"jscs": "jscs-dev/node-jscs#v1.12.0",

ध्यान दें, यदि आप npm --save का उपयोग करते हैं, तो आपको लंबा git मिलेगा

से https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

निर्भरता के रूप में जीआईटी यूआरएल

Git urls फॉर्म का हो सकता है:

git: //github.com/user/project.git#commit-ish git + ssh: // उपयोगकर्ता @ होस्टनाम: प्रोजेक्ट.जित # कमिट-ईश git + ssh: //user@hostname/project.git#commit- ish git + http: //user@hostname/project/blah.git#commit-ish git + https: //user@hostname/project/blah.git#commit-ish

कमिट-ईश कोई टैग, शा या शाखा हो सकती है जिसे चेक चेक करने के लिए एक तर्क के रूप में आपूर्ति की जा सकती है। डिफ़ॉल्ट मास्टर है।

गिटहब यूआरएल

संस्करण 1.1.65 के अनुसार, आप गिटहब उरल्स को केवल "फू": "उपयोगकर्ता / फू-प्रोजेक्ट" के रूप में संदर्भित कर सकते हैं। जैसे जीआईटी यूआरएल के साथ, एक कम-ईश प्रत्यय शामिल किया जा सकता है। उदाहरण के लिए:

{"नाम": "फू",
"संस्करण": "0.0.0",
"निर्भरता": {"एक्सप्रेस": "दूरदृष्टि / व्यक्त", "मोचा": "दूरम्पीडिया / मोचा # 4727d353" "}}


2
एक प्रतिबद्ध sha1 के आधार पर पसंदीदा विकल्प होना चाहिए, खासकर यदि आप एक रेपो पर निर्भर हैं जो आपके नियंत्रण में नहीं है। गिट शाखाएं और टैग अपरिवर्तनीय नहीं हैं (हटाया जा सकता है / बदल दिया जा सकता है, दुर्भावनापूर्ण रूप से / दुर्घटना से), जबकि यह (लगभग) एक sha1 टक्कर बनाने के लिए असंभव है।
jakub.g

1
क्या मेरे पास एक शाखा हो सकती है और प्रतिबद्ध-ईश के लिए प्रतिबद्ध है?
मुंशचिर जू।

45

यदि आप उपयोग develया featureशाखा करना चाहते हैं , या आपने एनपीएम रजिस्ट्री के लिए एक निश्चित पैकेज प्रकाशित नहीं किया है, या आप नहीं कर सकते क्योंकि यह एक निजी मॉड्यूल है, तो आप git://अपने वर्जन नंबर के बजाय एक यूआरआई को इंगित कर सकते हैं package.json:

"dependencies": {
   "public": "git://github.com/user/repo.git#ref",
   "private": "git+ssh://git@github.com:user/repo.git#ref"
}

#refभाग वैकल्पिक है, और यह एक शाखा हो सकते हैं (जैसे master), टैग (जैसे 0.0.1) या एक आंशिक या पूर्ण आईडी प्रतिबद्ध।


26

एनपीएम के नवीनतम संस्करण पर आप कर सकते हैं:

npm install gitAuthor/gitRepo#tag

यदि रेपो एक वैध एनपीएम पैकेज है, तो यह पैकेज में स्वतः-अलियास हो जाएगा।

{ "NPMPackageName": "gitAuthor/gitRepo#tag" }

यदि आप इसे @justingordon के उत्तर में जोड़ सकते हैं तो अब मैनुअल अलियासिंग की कोई आवश्यकता नहीं है!


4
नहीं, यह नहीं है। यह गलत तरीके से स्थापित होता है। किसी तरह यह रिपॉजिटरी से पूरी निर्देशिका संरचना को शामिल नहीं करता है, केवल कुछ फाइलें जैसे पैकेज.जसन, यार्न ।लॉक, रीडमी और लाइसेंस। कोई src या dist फोल्डर नहीं है।
स्टालकलेक्स

@StalkAlex docs.npmjs.com/cli/publish और फिर निर्माण स्क्रिप्ट के लिए आपके द्वारा स्थापित रेपो की जांच करें। हो सकता है कि उन्हें टैग किया गया हो या पोस्ट-इंस्टॉल आपके लिए काम नहीं करता हो, यह उस विशिष्ट पैकेज के लिए एक समस्या है, वैसे भी आशा है कि इससे मदद मिलेगी!
भंवर

@vortex धन्यवाद, टैगिंग से आपका क्या तात्पर्य है? यह इस तरह की समस्या कैसे है?
स्टालकलेक्स

0

अगर यह किसी की मदद करता है, तो मैंने ऊपर सब कुछ करने की कोशिश की (https w / टोकन मोड) - और अभी भी कुछ भी काम नहीं कर रहा था। मुझे कोई त्रुटि नहीं मिली, लेकिन नोड_मॉड्यूल या पैकेज_लॉक.जॉन में कुछ भी स्थापित नहीं किया जाएगा। अगर मैंने रेपो नाम या उपयोगकर्ता नाम, आदि में कोई टोकन या कोई अक्षर बदला है - तो मुझे एक त्रुटि मिलेगी। इसलिए मुझे पता था कि मेरे पास टोकन और रेपो नाम है।

आखिरकार मुझे एहसास हुआ कि मेरे पैकेज में जो निर्भरता थी उसका नाम था। जसन पैकेज में नाम से मेल नहीं खाते थे। रेपो के मैं भी खींचने की कोशिश कर रहा था। यहां तक ​​कि npm स्थापित --verbose यह नहीं कहता कि कोई समस्या है। यह सिर्फ निर्भरता w / o त्रुटि को नजरअंदाज करने के लिए लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.