2013-02-18 32 views
12

İş yerinde bir HTTP Proxy'sinin arkasındayız ve git protokolü (9418 numaralı bağlantı noktası) reddedildi. Projem NPM bağımlılıkları vardır ve bu bağımlılıklar bazıları, örneğin git protokolünü kullanan bağımlılıkları: my package.jsonnpm git protokol bağımlılıkları

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

yılında

ve jsdoc3 ait package.json:

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

nasıl Bu bağımlılıkları nasıl alabilirim, NPM'ye protokolü yerine git+https:// protokolünü kullanmak veya git protokolünü kullanabilmek için nasıl söylerim?

Pencerelerde olduğum şeyleri basitleştirmek için (Linux'ta bir SSH tüneli oluşturmak daha kolay olurdu) ve GIT-Bash kullanıyorum.

Teşekkür

cevap

28

yerine GYTE https kullanma için git söyleyebilirim

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

sizin bağımlılık URL'lerinizdeki git+https:// veya git+http:// belirtmek mümkündür

ben sonra npm install ran

{ 
    "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" 
} 

aşağıdaki package.json aldı ve node_modules aşağıdaki içeriyordu

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> 

Bunu her iki protokolde de git + http ve git + https ile denedim ve her ikisi de işe yaradı, ancak çıplak http hata üretmekte başarısız oldu.

+0

Bağımlılıkların package.json dosyasında denetimim yok. Benim package.json içinde, tüm bağımlılıkları 'git + https' şemasını kullanır, ancak sorun transit bağımlılıkları (bağımlılıklarımın bağımlılıkları) içindir. – krampstudio

+0

Ah görüyorum; Bir SSH tüneli kurmak için bir pencere ortamı kurmak imkansız olmamalı. Anında bağımlılığınızı + http değişkenlerini kullanmaya başlamanızın başarısız olması. Yine de korkunç bir hack. Son olarak, proje için bir iş durumu oluşturma ve gitme trafiğine izin vermek için ağ yöneticinize bunu sunma seçeneği vardır. –

5

Sonunda kirli bir çözüm buldum, ancak bu iyi çalışıyor. Ben dosyaya npm/lib/cache.js içine npm v1.1.69 günü http protokolü tarafından (açılan kaynağına sayesinde)

git protokolü yerine NPM kodunu modifiye ettik, ben işlevi aşağıdaki satırları ekledik aşağıdaki komutla //: 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

Ayrıca http: // stackoverflow'u da buldum.com/questions/4891527/git-protokol-bloke-by-şirket-nasıl-can-i-get-around-bu/10729634 # 10729634 – krampstudio

+0

teşekkürler, url yeniden çalışma vekilimi arkasında çalışma değildi, ama bu yaptı. –

+0

Ayrıca bu dosyada 'git:' '' 'https:' dizinini değiştirmek zorunda kaldım: 'npm/node_modules/github-url-from-username-repo/index.js', fakat beni düzeltmek için doğru yolda buldunuz aynı sorun. Teşekkürler! – quornian

1

@Nowres Sugge ek olarak stion, işe almak için aşağıdakileri yapmak zorunda

git config --global url."https://github.com/".insteadOf [email protected]: 
git config --global url."https://".insteadOf git://