2013-02-18 25 views
12

काम पर हम एक HTTP प्रॉक्सी के पीछे हैं और गिट प्रोटोकॉल (पोर्ट 9418) अस्वीकार कर दिया गया है। मेरे परियोजना NPM निर्भरता है और इन निर्भरताओं के कुछ निर्भरता कि Git प्रोटोकॉल का उपयोग उदाहरण के लिए, है: मेरे package.jsonएनपीएम गिट प्रोटोकॉल निर्भरता

"dependencies": { 
    "jsdoc3" : "git+https://github.com/jsdoc3/jsdoc.git" 
} 

में

और jsdoc3 की package.json:

"dependencies": { 
    "crypto-browserify": "git://github.com/dominictarr/crypto-browserify.git#95c5d505", 
    "github-flavored-markdown": "git://github.com/hegemonic/github-flavored-markdown.git" 
} 

कैसे क्या मैं उन निर्भरताओं को प्राप्त कर सकता हूं, प्रोटोकॉल का उपयोग git:// प्रोटोकॉल के बजाय या गिट प्रोटोकॉल का उपयोग करने में सक्षम होने के लिए एनपीएम को कैसे कहना है?

चीजों को सरल बनाने के लिए मैं विंडोज़ पर हूं (लिनक्स पर एसएसएच सुरंग बनाने के लिए यह आसान होगा), और मैं जीआईटी-बैश का उपयोग करता हूं।

धन्यवाद

उत्तर

28

उस Git के बजाय https का उपयोग करना Git बता सकते हैं

git config --global url."https://".insteadOf git:// 
1

यह git+https:// या git+http:// अपनी निर्भरता URL में निर्दिष्ट करना संभव है

मैं

{ 
    "name": "Sample package", 
    "description": "Pacake for a Stackoverflow question", 
    "author": "rk <[email protected]>", 
    "dependencies": { 
    "crypto-browserify": "git+https://github.com/dominictarr/crypto-browserify.git#95c5d505", 
    "github-flavored-markdown": "git+https://github.com/hegemonic/github-flavored-markdown.git" 
    }, 
    "engine": "node 0.4.1" 
} 

मैं तो npm install दौड़ा से निम्नलिखित package.json लिया और node_modules निम्नलिखित निहित

C:\Users\myself\node\node_modules>dir 
Volume in drive C is WINDOWS 
Volume Serial Number is 6E7A-96BE 

Directory of C:\Users\myself\node\node_modules 

18/02/2013 13:57 <DIR>   . 
18/02/2013 13:57 <DIR>   .. 
18/02/2013 13:58 <DIR>   .bin 
18/02/2013 13:57 <DIR>   crypto-browserify 
18/02/2013 13:56 <DIR>   express 
18/02/2013 13:57 <DIR>   github-flavored-markdown 
18/02/2013 13:56 <DIR>   optimist 
       0 File(s)    0 bytes 
       7 Dir(s) 31,641,919,488 bytes free 

C:\Users\myself\node\node_modules> 

मैंने दोनों प्रोटोकॉल गिट + http और गिट + https के साथ यह कोशिश की और दोनों काम करते थे, लेकिन नंगे http त्रुटियों के उत्पादन में कामयाब रहे।

+0

मेरे पास निर्भरता की package.json फ़ाइल पर नियंत्रण नहीं है। मेरे पैकेज.जेसन में, मेरी सभी निर्भरताएं 'गिट + https' योजना का उपयोग करती हैं, लेकिन समस्या पारगमन निर्भरताओं (मेरी निर्भरताओं की निर्भरता) के लिए है। – krampstudio

+0

आह मैं देखता हूं; एक एसएसएच सुरंग को एक विंडोज वातावरण स्थापित करना असंभव नहीं होना चाहिए, ऐसा करने के लिए उपकरण हैं। विफल रहा है कि आप + http वेरिएंट का उपयोग करने के लिए अपनी तत्काल निर्भरताओं को हैक कर सकते हैं। निश्चित रूप से एक भयानक हैक। अंत में परियोजना के लिए व्यवसाय केस बनाने का विकल्प है और यह बताता है कि आपके नेटवर्क प्रबंधक को गिट ट्रैफिक की अनुमति देने के लिए। –

5

अंत में मुझे एक गंदा समाधान मिला, लेकिन यह ठीक काम करता है। मैं NPM का कोड संशोधित करने के NPM v1.1.69 पर (खोला स्रोत के लिए धन्यवाद)

http प्रोटोकॉल द्वारा git प्रोटोकॉल को बदलने के लिए फ़ाइल npm/lib/cache.js में, मैं समारोह के लिए निम्नलिखित लाइनों को जोड़ दिया है निम्न आदेश के साथ //: addRemoteGit

// ssh paths that are scp-style urls don't need the ssh:// 
if (parsed.pathname.match(/^\/?:/)) { 
    u = u.replace(/^ssh:\/\//, "") 
} 

//begin trick 
if(/^git:/.test(u)){ 
    u = u.replace(/^git/, 'https'); 
} 
//end trick 

log.verbose("addRemoteGit", [u, co]) 
+2

मुझे यह http: // stackoverflow भी मिला है।कॉम/प्रश्न/48 9 1527/गिट-प्रोटोकॉल-अवरुद्ध-द्वारा-कंपनी-कैसे-कर-मैं-आसपास-आसपास/10729634 # 10729634 – krampstudio

+0

धन्यवाद, यूआरएल पुनर्लेख मेरे काम प्रॉक्सी के पीछे काम नहीं कर रहा था, लेकिन ऐसा हुआ। –

+0

मुझे इस फ़ाइल में 'git:' से 'https: 'को भी बदलना पड़ा:' npm/node_modules/github-url-from-username-repo/index.js', लेकिन आप मुझे ठीक करने के लिए सही रास्ते पर पहुंचे एक ही मुद्दा। धन्यवाद! – quornian

1

@Nowres sugge के अलावा stion, मैं यह काम करने के लिए प्राप्त करने के लिए निम्नलिखित करना था

git config --global url."https://github.com/".insteadOf [email protected]: 
git config --global url."https://".insteadOf git:// 
संबंधित मुद्दे