npm package.json में निर्भरता द्वारा निजी github रिपॉजिटरी स्थापित करें


210

मैं npm द्वारा github निजी रिपॉजिटरी स्थापित करने की कोशिश कर रहा हूं जिसमें निर्भरता के रूप में अन्य निजी github रिपॉजिटरी शामिल हैं।

बहुत सारे तरीके और पोस्ट करने की कोशिश की है, लेकिन कोई भी काम नहीं कर रहा है। यहाँ मैं क्या कर रहा हूँ:

npm install git+https://github.com/myusername/mygitrepository.git

in package.json की तरह है:

"dependencies": {
    "repository1name": "git+https://github.com/myusername/repository1.git",
    "repository2name": "git+https://github.com/myusername/repository2.git"
}

इसे करने का सही तरीका क्या है?


4
git + https: // <टोकन-से-जीथब>: x-oauth-basic@github.com/ <user> / <GitRepo> .It यह प्रमाणीकरण का समर्थन करता है और सभी मामलों में ठीक काम करता है।
वशिष्ठाशु

जवाबों:


147

इसे इस्तेमाल करे:

"dependencies" : {
  "name1" : "git://github.com/user/project.git#commit-ish",
  "name2" : "git://github.com/user/project.git#commit-ish"
}

आप यह भी कोशिश कर सकते हैं, जहां दूरदृष्टि / एक्सप्रेस नाम / रेपो है:

"dependencies" : {
   "express" : "visionmedia/express"
}

या (यदि npm पैकेज मॉड्यूल मौजूद है):

"dependencies" : {
  "name": "*"
}

NPM डॉक्स से लिया गया


1
npm ईआरआर! असफल हल git HEAD ( github.com/user/reponame.it ) घातक: अस्पष्ट तर्क 'कमिट-इश': अज्ञात संशोधन या कार्यशील पेड़ में नहीं पथ।
वशिष्ठाशु

काम नहीं करता है। # XXXxx को आवश्यक नहीं माना जाता है जैसे कि इसे मास्टर माना जाता है और मेरे सभी काम मास्टर में हैं। कोई अन्य विचार?
वशिष्ठाशु

यदि आप हेडर (# कमिट-ईश) निकालते हैं तो समान परिणाम?
leko

आपके भंडार का नाम क्या है?
leko

28
@vashishatashu, fatal: ambiguous argument 'commit-ish': unknown revision or path not in the working tree.सुंदर के बारे में स्पष्ट है कि commit-ishसिर्फ एक नमूना शब्द है जिसे आपको shaएक विशिष्ट प्रतिबद्ध के साथ बदलना चाहिए जो आपको चाहिए । (या उस #commit-ishसब को हटा दें यदि आपको अपनी मास्टर शाखा में नवीनतम प्रतिबद्ध की आवश्यकता है)
meandre

91

निम्नलिखित सभी स्थितियों में ठीक काम किया है जिनकी मुझे आवश्यकता है:

"dependencies": {
"GitRepo": "git+https://<token-from-github>:x-oauth-basic@github.com/<user>/<GitRepo>.git"
}

1
क्या आपके पास इस समाधान के लिए एक संदर्भ लिंक है?
इयान

3
@ इयान: मैंने इसे कहीं पढ़ा है लेकिन संदर्भ लिंक नहीं है। मैं बिना किसी समस्या के एक साल से अधिक समय से उत्पादन में इसका उपयोग कर रहा हूं। आप गितुब से ओउथ टोकन प्राप्त कर सकते हैं: सेटिंग्स -> अनुप्रयोग -> व्यक्तिगत एक्सेस टोकन -> नया टोकन उत्पन्न करें। यह टोकन आपके उपयोग के मामले के अनुसार पढ़ / लिख सकता है या दोनों विशेषाधिकार दे सकता है।
वशिष्ठषु ० १०'१५

6
@lan: बिटबकेट के लिए आप सिंटैक्स का उपयोग कर सकते हैं: git clone https: // <bitbucket-team-token>: x-oauth-basic@bitbucket.org/ <टीम> / <BitRucko> <bitbucket-team-token> कर सकते हैं से प्राप्त किया जा सकता है: टीम -> प्रबंधित टीम -> एपीआई कुंजी
vashishatashu

@vashishatashu, एक महान विचार के लिए धन्यवाद। हालांकि, मुझे इस बात की कोशिश करते समय "घातक: ब्लाहबला नहीं मिला", हालांकि मैंने रेपो के प्रश्न में उपयोगकर्ता तक पहुंच प्रदान की है। कोई विचार?
प्रति लूंडबर्ग

2
यहाँ इस तकनीक पर एक अच्छा लेख है: rzrsharp.net/2013/07/02/…
cyberwombat

75

आप में से जो लोग सार्वजनिक निर्देशिकाओं के लिए npm डॉक्स से यहां आए हैं: https://docs.npmjs.com/files/package.json#git-urls-as-d dependencies

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

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

git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
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
As of version 1.1.65, you can refer to GitHub urls as just “foo”: “user/foo-project”. npmjs डॉक्स संदर्भ
अलेक्जेंडार

प्रोटोकॉल का क्या git+https://मतलब है? gitक्लोनिंग के लिए प्रोटोकॉल का उपयोग करें और पुश करने के दौरान नए बदलावों को खींचें https?
टनिक्स

60

स्वीकृत उत्तर काम करता है, लेकिन मुझे सुरक्षित टोकन को पेस्ट करने का विचार पसंद नहीं है package.json

मैंने इसे कहीं और पाया है, बस इस एक बार के कमांड को git-config manpage में डॉक्यूमेंट के रूप में चलाएं ।

git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf git@github.com:

GITHUB_TOKEN environmnet चर के रूप में सेटअप किया जा सकता है या सीधे चिपकाया जा सकता है

और फिर मैं निजी github repos जैसे स्थापित करता हूं: npm install user/repo --save


हेरोकू में भी काम करता है, बस उपरोक्त git config ...कमांड को heroku-prebuildस्क्रिप्ट में package.jsonऔर सेटअप GITHUB_TOKENमें हेरोकू कॉन्फिगर चर के रूप में सेटअप करें ।


यह माइक्रोसॉफ्ट विजुअल स्टूडियो टीम सर्विसेज बिल्ड चेन में भी काम करता है, जहां मैं npm installकदम से ठीक पहले इसे "कमांड" के रूप में निष्पादित करता हूं ।
लूक्स

2
बहुत शानदार! CI वातावरण के लिए महान समाधान! मुझे इसे थोड़ा संशोधित करना पड़ा; मुझे अंत में बदलना पड़ा...insteadOf ssh://git@github.com
स्कॉट रिपी

2
यह मेरे npm को प्रभावित नहीं करता है। यह अभी भी ssh का उपयोग कर रहा है जब चल रहा है npm install user/repo --save। क्या मुझे कॉन्फ़िगर करने की आवश्यकता है?
मार्को प्रिन्स

1
CI पर्यावरण के लिए उत्कृष्ट समाधान जहां SSH की स्थापना एक दर्द (CloudBuild) है! इसके लिए आपका बहुत-बहुत धन्यवाद!
मथिउ बॉर

43

इसे करने के कई तरीके हैं जैसे लोग बताते हैं, लेकिन सबसे छोटे संस्करण हैं:

// from master
"depName": "user/repo",

// specific branch
"depName": "user/repo#branch",

// specific commit
"depName": "user/repo#commit",

// private repo
"depName": "git+https://[TOKEN]:x-oauth-basic@github.com/user/repo.git"

जैसे

"dependencies" : {
  "hexo-renderer-marked": "amejiarosario/dsa.jsd#book",
  "hexo-renderer-marked": "amejiarosario/dsa.js#8ea61ce",
  "hexo-renderer-marked": "amejiarosario/dsa.js",
}

3
यह सबसे अच्छा जवाब है! <3 सीधे बिंदु पर और यहां तक ​​कि विभिन्न मामलों के उदाहरण भी दिखाएं।
रेनाटो कार्वाल्हो

सार्वजनिक रिपॉजिटरी के लिए पर्याप्त जवाब, जो दुर्भाग्य से ओपी का सवाल नहीं था। फिर भी, इससे मुझे मदद मिली और मैंने इसकी सराहना की।
रनडरवर्ल्ड

मैंने निजी रेपो केस को शामिल करने के लिए अपना जवाब अपडेट किया
एड्रियन

29
"dependencies": {
  "some-package": "github:github_username/some-package"
}

या केवल

"dependencies": {
  "some-package": "github_username/some-package"
}

https://docs.npmjs.com/files/package.json#github-urls


पूरी तरह से काम किया है और सबसे संक्षिप्त है। अन्य समाधानों से त्रुटियां हुईं। धन्यवाद!
रयाल

7

चूंकि गिट curlहुड के तहत उपयोग करता है , आप ~/.netrcक्रेडेंशियल्स के साथ फाइल का उपयोग कर सकते हैं । GitHub के लिए यह कुछ इस तरह दिखेगा:

machine github.com
  login <github username>
  password <password OR github access token>

यदि आप उपयोग करना चुनते हैं access tokens, तो इससे उत्पन्न किया जा सकता है:

सेटिंग्स -> डेवलपर सेटिंग्स -> व्यक्तिगत एक्सेस टोकन

यह भी काम करना चाहिए अगर आप अपने निगम में जीथब एंटरप्राइज का उपयोग कर रहे हैं। बस अपने उद्यम github url को machineमैदान में रखें।


मेरे लिए machine github.com login <token>एक लाइन पर और "package": "https://github.com/acme/privaterepo.git#commit-ish"सीधे साथ काम कियाnpm install https://github.com/acme/privaterepo.git#commit-ish
abernier

4

package.jsonफ़ाइल में प्रकाशित किए बिना गीथब टोकन का उपयोग करने का एक और अधिक विस्तृत संस्करण यहां दिया गया है ।

  1. व्यक्तिगत जीथब एक्सेस टोकन बनाएं
  2. सेटअप url फिर से लिखें ~ / .gitconfig में
git config --global url."https://<TOKEN HERE>:x-oauth-basic@github.com/".insteadOf https://x-oauth-basic@github.com/
  1. निजी भंडार स्थापित करें। पहुँच त्रुटियों को डीबग करने के लिए वर्बोज़ लॉग स्तर।
npm install --loglevel verbose --save git+https://x-oauth-basic@github.com/<USERNAME HERE>/<REPOSITORY HERE>.git#v0.1.27

Github तक पहुँच के मामले में, git ls-remote ...कमांड चलाने की कोशिश करें जो किnpm install will print


0

मेरे निजी रिपॉजिटरी संदर्भ के लिए मैं एक सुरक्षित टोकन शामिल नहीं करना चाहता था, और अन्य सरल में से कोई भी (यानी केवल package.json में निर्दिष्ट) काम किया। यहाँ क्या काम किया है:

  1. GitHub.com पर गया
  2. निजी रिपोजिटरी में नेविगेट किया गया
  3. "क्लोन या डाउनलोड" और कॉपी किया गया URL पर क्लिक किया (जो ऊपर दिए गए उदाहरणों से मेल नहीं खाता)
  4. जोड़ा # कमिट-शा
  5. रैन एन.पी.एम.

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