2013-05-03 6 views
294

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

मैं अपने package.json के dependencies में क्या लिखूं?

उत्तर

430

npm docs से:

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

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

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

+1

'git: //github.com/ / .git # सुविधा/blah' काम किया लेकिन '/ .git # सुविधा/blah' नहीं था ... शायद उनके regex खाते में 'सुविधा/blah' लेने के लिए और अधिक उन्नत होने की जरूरत है। यह npm था v1.4.28' – pulkitsinghal

+1

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

109

@ dantheta की टिप्पणी प्रति:

NPM 1.1.65 के रूप में, Github यूआरएल अधिक संक्षिप्त उपयोगकर्ता/परियोजना हो सकता है। 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: //github.com/user/project.git#commit-ish Git + ssh:

Git निर्भरता

Git यूआरएल के रूप में यूआरएल रूप का हो सकता है // उपयोगकर्ता @hostname: project.git # प्रतिबद्ध-ish Git + ssh: //[email protected]/project.git#commit-ish Git + http://[email protected]/project/blah.git#commit-ish Git + https://[email protected]/project/blah.git#commit-ish

प्रतिबद्ध-ish किसी भी टैग किया जा सकता है, शा, या शाखा जिसे एक तर्क के रूप में आपूर्ति की जा सकती है गिट चेकआउट। डिफ़ॉल्ट गुरु है। "उपयोगकर्ता/foo-परियोजना":

GitHub यूआरएल

संस्करण 1.1.65 के रूप में, तुम सिर्फ "foo" के रूप में GitHub यूआरएल देख सकते हैं। जैसे ही गिट यूआरएल के साथ, एक प्रतिबद्ध-आईएसएच प्रत्यय शामिल हो सकता है। उदाहरण के लिए:

{ "नाम": "foo"
"संस्करण": "0.0।0 ",
" निर्भरता ": { " व्यक्त ":" visionmedia/व्यक्त ", " मोचा ":" visionmedia/मोचा # 4727d357ea " }}

+2

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

+1

क्या मेरे पास शाखा है और प्रतिबद्धता के लिए प्रतिबद्ध है? – munchschair

27

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

"dependencies": { 
    "public": "git://github.com/user/repo.git#ref", 
    "private": "git+ssh://[email protected]:user/repo.git#ref" 
} 

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

10

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

npm install gitAuthor/gitRepo#tag

रेपो एक वैध NPM पैकेज यह ऑटो एलियास के रूप में package.json में हो जाएगा है:

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

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

+0

एक आकर्षण की तरह काम करता है। –

+0

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

+0

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

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