अपनी खुद की रजिस्ट्री के बिना एक निजी एनपीएम मॉड्यूल कैसे स्थापित करें?


329

मैंने कुछ साझा कोड ले लिए हैं और इसे एनपीएम मॉड्यूल में डाल दिया है, एक जिसे मैं केंद्रीय रजिस्ट्री पर अपलोड नहीं करना चाहता हूं। सवाल यह है कि मैं इसे अन्य परियोजनाओं से कैसे स्थापित करूं?

स्पष्ट तरीका शायद अपनी खुद की एनपीएम रजिस्ट्री स्थापित करना है, लेकिन प्रलेखन के अनुसार, जिसमें बहुत परेशानी होती है।

क्या मैं सिर्फ एक NPM मॉड्यूल स्थापित कर सकता हूं जो स्थानीय फाइल सिस्टम पर बैठता है, या शायद गिट से भी?

npm install --from-git git@server:project

जवाबों:


262
cd somedir
npm install .

या

npm install path/to/somedir

somedirpackage.jsonइसके अंदर होना चाहिए ।

यह git के बारे में भी जानता है:

npm install git://github.com/visionmedia/express.git

4
पथ / / to / somedir समाधान तरह का काम करता है, लेकिन फिर यह एक प्रकार का भयानक है क्योंकि सभी को तब बयानों की आवश्यकता होती है, जिसमें उस रिश्तेदार या निरपेक्ष पथ को शामिल करना होता है। कृपया मुझे सही करें अगर मैं कुछ गलत कर रहा हूँ ...
ल्यूक बेयस

3
@ हाँ, आप गलत हैं। npm installसभी फाइलों को आपकी परियोजना निर्देशिका में कॉपी करने के बाद । इसलिए requireबयानों में पथ केवल आपकी परियोजना निर्देशिका के सापेक्ष होंगे।
मिहाई

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

11
साइड नोट: (ए) git repos का उपयोग करते समय, आप #<ref>git url के अंत में जोड़कर एक शाखा / वचन / टैग निर्दिष्ट कर सकते हैं git://github.com/visionmedia/express.git#v0.0.1; (b) सुरक्षित रूप "private": trueसे अपने निजी प्रतिनिधि के package.json में जोड़ें । यह सुनिश्चित करेगा कि npm आपको कभी भी गलती से अपने गुप्त सॉस को आधिकारिक npm रजिस्ट्री में प्रकाशित नहीं करने देगा। ( डीबग करने योग्य.com/posts/… के अनुसार )
राफेल ज़ेवियर

9
FYI करें अगर आप http के माध्यम से अपना काम कर रहे हैं तो आपको ठीक काम करने के लिए npm i git+http://all/the/things.gitभी आवश्यकता होगीgit clone http://all/the/things.git
slf

527

अपने निजी npm मॉड्यूल में जोड़ें

"private": true 

अपने पैकेज के लिए। Json

फिर किसी अन्य मॉड्यूल में निजी मॉड्यूल को संदर्भित करने के लिए, इसे अपने पैकेज में उपयोग करें। json

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
    }
}

59
यह वह जगह है असली सही जवाब अगर आप अपने package.json निजी रेपो निर्भरता सूची है, जो एक अच्छी बात (टीएम) है कि आप क्या करना चाहिए है बनाए रखना चाहते हैं।

6
उदाहरण में यह एक विशिष्ट टैग को संदर्भित करता है, लेकिन यदि आपके पास एक नहीं है, तो यह मास्टर के लिए डिफ़ॉल्ट होगा। (देखें git-scm.com/book/en/Git-Basics-Tagging )
250R

4
मुझे समझ में नहीं आ रहा है कि अगर मैं अपनी साख को नहीं बढ़ा रहा हूं तो यह कमांड लाइन एक निजी जीथब रेपो से कोड कैसे डाउनलोड कर सकती है! तो मैं अपने गिटुब क्रेडेंशियल्स कैसे पास कर सकता हूं?
रेनाटो गामा

28
ध्यान दें कि "private": trueभाग आवश्यक नहीं है, लेकिन यह आपके निजी रेपो को गलती से सार्वजनिक npm रजिस्ट्री में प्रकाशित होने से रोकने में मदद करेगा।
evanrmurphy

2
npm कई पर्यावरण चर के लिए भी दिखता है। अनुभाग में मैनुअल से npm install <git remote url>, जैसे विकल्प हैं। GIT_ASKPASSऔर GIT_SSH। डिफ़ॉल्ट id_rsa के अलावा एक कुंजी चुनने के लिए एक उदाहरण का उपयोग करें:GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://git@github.com:npm/npm.git
जैस्मीन हेगमैन

62

क्या मैं सिर्फ स्थानीय फाइल सिस्टम पर, या शायद गिट से भी बैठे एनपीएम पैकेज को स्थापित कर सकता हूं?

हाँ तुम कर सकते हो! डॉक्स https://docs.npmjs.com/cli/install से

एक पैकेज है:

  • a) एक फ़ोल्डर जिसमें पैकेज.जॉसन फ़ाइल द्वारा वर्णित प्रोग्राम है
  • बी) एक gzipped टारबॉल युक्त (a)
  • c) एक url जो (b) को हल करता है
  • d) <name>@<version>रजिस्ट्री (c) के साथ प्रकाशित किया जाता है
  • ई) एक <name>@<tag>बिंदु (डी)
  • एफ) एक <name>"नवीनतम" टैग संतोषजनक है (ई)
  • जी) जो <git remote url>(बी) का समाधान करता है

Npm शानदार नहीं है?


2
ध्यान दें कि यदि आप विकल्प बी के लिए जाते हैं), तो यह वास्तव में एक gzipped tarball होना चाहिए , एक मात्र ज़िप संग्रह ऐसा नहीं करेगा। यानी यदि आप अपना पैकेज बनाते हैं tar -czf my-package.tar.gz dist(यह मानते हुए कि आपके distफ़ोल्डर में भी एक उचित package.jsonफ़ाइल है), तो आप npm install ../my-lib/my-package.tar.gzअपने दूसरे प्रोजेक्ट से कर सकते हैं ।
डेनियल किस-नागी

48

अपडेट जनवरी 2016

अन्य उत्तरों के अलावा , कभी-कभी ऐसा परिदृश्य होता है जहाँ आप टीम संदर्भ में निजी मॉड्यूल उपलब्ध कराना चाहते हैं।

Github और Bitbucket दोनों ही एक टीम एपीआई कुंजी बनाने की अवधारणा का समर्थन करते हैं । यह एपीआई कुंजी इस टीम के रूप में एपीआई अनुरोध करने के लिए पासवर्ड के रूप में उपयोग की जा सकती है ।

अपने निजी npm मॉड्यूल में जोड़ें

"private": true 

अपने पैकेज के लिए । Json

फिर किसी अन्य मॉड्यूल में निजी मॉड्यूल को संदर्भित करने के लिए, इसे अपने पैकेज में उपयोग करें। json

    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
        }
    }

जहाँ टीम का नाम = myteamname , और API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

यहाँ मैं एक बिटबकेट रेपो का संदर्भ देता हूं, लेकिन जीथब का भी उपयोग करना लगभग समान है।

अंत में, एक विकल्प के रूप में, यदि आपको वास्तव में $ 7 प्रति माह (लेखन के रूप में) भुगतान करने में कोई आपत्ति नहीं है, तो अब आप निजी एनपीएम मॉड्यूल को बॉक्स से बाहर कर सकते हैं ।


यदि आप एक वैश्विक मॉड्यूल रखना चाहते हैं तो क्या आप इसका उपयोग कर सकते हैं?
पीआई

यह मेरे लिए काम नहीं करता है मुझे डर है। रिमोट और रिपॉजिटरी दोनों नहीं मिलते हैं। कोई विचार?
थॉमस बोरमंस

@ThomasBormans - अभी भी परेशानी हो रही है? कृपया पेस्ट करें (अपने टीमनाम / एपीआई कुंजी को स्क्रैम्बल करें) आपके पैकेज की निर्भरता अनुभाग में आपकी लाइन के रूप में क्या है। ऊपर दिए गए निर्देशों के अनुसार। मुझे यह अच्छी तरह से जीथब और बिटकबेट दोनों के लिए काम करता है। जो आप उपयोग कर रहे हैं?
आर्केल्डन

@arcseldon "नाम": "git + key: x-oauth-basic@bitbucket.org/user/repo.git " रिटर्न EISDIR: एक निर्देशिका पर अवैध संचालन, पढ़ें । और "नाम": "git + उपयोगकर्ता: key@bitbucket.org/repo.git " इन शब्दों सहित कई त्रुटियां देता है रिमोट: नहीं मिला, घातक: रिपोजिटरी, कमांड विफल: git क्लोन । कोई विचार?
थॉमस बॉर्म्स 17

उत्तर में दिए गए "सटीक" प्रारूप का अनुसरण करने का प्रयास करें: "git + https: // <myteamname>: <my_key> @ bitbucket.org / <my_repo_name> .git आपने एपीआई कुंजी कैसे बनाई? क्या आपने दोहरी जाँच की है? यह आपकी बिटबकेट सेटिंग्स में सही है ... स्पष्ट पूछने के लिए क्षमा करें, लेकिन मुझे 100% विश्वास है कि यह काम करना चाहिए।
18 नवंबर को arcseldon

30

एफडब्ल्यूआईडब्ल्यू: निजी संगठन भंडार के साथ काम करते समय मुझे इन सभी जवाबों के साथ समस्या थी।

निम्नलिखित ने मेरे लिए काम किया:

npm install -S "git+https://username@github.com/orgname/repositoryname.git"

उदाहरण के लिए:

npm install -S "git+https://blesh@github.com/netflix/private-repository.git"

मुझे पूरी तरह से यकीन नहीं है कि इस एक मामले में अन्य उत्तर मेरे लिए काम क्यों नहीं करते हैं, क्योंकि मैंने Google को हिट करने से पहले जो मैंने कोशिश की थी और यह जवाब मिला। और अन्य उत्तर वही हैं जो मैंने अतीत में किए हैं।

उम्मीद है कि यह किसी और की मदद करता है।


2
क्या आप गिट रेपो के सबफ़ोल्डर का उपयोग कर सकते हैं?
क्रिस

2019 में मेरे लिए काम किया! लेकिन मुझे यह सुनिश्चित करना था कि git के पास उस खाते तक पहुँचने के लिए साख हो। (उदाहरण के लिए दो बार git क्लोन का परीक्षण https://करें, और यह सुनिश्चित करें कि दूसरे रन पर पासवर्ड की आवश्यकता नहीं है। फिर आप जाने के लिए अच्छे हैं!)
joeytwiddle

9

मुझे भी यही समस्या थी, और कुछ खोज के बाद, मुझे रेगी ( https://github.com/mbrevoort/node-reggie ) मिला । यह काफी ठोस दिखता है। यह निजी सर्वरों के लिए एनपीएम मॉड्यूल के हल्के प्रकाशन के लिए अनुमति देता है। बिल्कुल सही नहीं (स्थापना पर कोई प्रमाणीकरण नहीं है), और यह अभी भी वास्तव में युवा है, लेकिन मैंने इसे स्थानीय रूप से परीक्षण किया है, और ऐसा लगता है कि यह वही करता है जो इसे करना चाहिए।

वह है ... (और यह सिर्फ उनके डॉक्स से)

npm install -g reggie
reggie-server -d ~/.reggie

तो अपने मॉड्यूल निर्देशिका में सीडी और ...

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

अंत में, आप केवल उस url का उपयोग करके reggie से संकुल को सीधे npm संस्थापन कमांड में या पैकेज के भीतर से स्थापित कर सकते हैं। ऐसा ... जैसे

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0

या ..

dependencies: {
    "foo": "http://<host:port>/package/foo/1.0.0"
}

7

नीचे दिए गए सुलभ तरीके से अपने कोड को संरचित करें। यदि यह आपके लिए संभव है।

  • NodeProjs \ Apps \ MainApp \ package.json

  • NodeProjs \ मॉड्यूल \ DataModule \ package.json

MainApp के भीतर @ NodProjs \ Apps \ MainApp \

npm install --S ../../Modules/DataModule

आपको पैकेज.जॉन को अपडेट करने की आवश्यकता हो सकती है:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}

यह मेरी स्थिति के लिए काम किया।


5

Npm अब $ 7 / user / month के लिए असीमित निजी होस्ट किए गए मॉड्यूल प्रदान करता है

cd private-project
npm login

अपने पैकेज में सेट करें "name": " @username/private-project"

npm publish

फिर अपनी परियोजना की आवश्यकता के लिए:

cd ../new-project
npm install --save @username/private-project

1
क्या इसके लिए क्लाइंट-साइड लॉगिन कदम की आवश्यकता है?
ऐदन हुलाचन

इसका क्या विकल्प है? उदाहरण के लिए, यदि आप S3 पर अपने "पैकेज" को होस्ट करना चाहते हैं और वहां से खींच सकते हैं।
कॉन एंटोनाकोस

4

आर्कसेलडन के उत्तर से शुरू करते हुए , मैंने पाया कि टीम का नाम URL में आवश्यक था जैसे:

npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"

और ध्यान दें कि एपीआई कुंजी केवल टीम के लिए उपलब्ध है, न कि व्यक्तिगत उपयोगकर्ताओं के लिए।


2

भले ही फ़ायरवॉल के अंतर्गत मशीन हो, सार्वजनिक गितुब भंडार से स्थापित करने के लिए कॉन्फ़िगर करें:

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}

2

मैं एक निजी गथुब भंडार के साथ निम्नलिखित का उपयोग करता हूं:

npm install github:mygithubuser/myproject

2

यह वही था जिसकी मुझे तलाश थी :

# Get the latest from GitHub, public repo:
$ npm install username/my-new-project --save-dev
# Bitbucket, private repo:
$ npm install git+https://token:x-oauth-basic@github.com/username/my-new-project.git#master
$ npm install git+ssh://git@github.com/username/my-new-project.git#master

#  or from Bitbucket, public repo:
$ npm install git+ssh://git@bitbucket.org/username/my-new-project.git#master --save-dev
# Bitbucket, private repo:
$ npm install git+https://username:password@bitbucket.org/username/my-new-project.git#master
$ npm install git+ssh://git@bitbucket.org/username/my-new-project.git#master
# Or, if you published as npm package:
$ npm install my-new-project --save-dev

2

आप इस उद्देश्य के लिए Verdaccio का उपयोग कर सकते हैं जो कि Node.js. में निर्मित एक हल्की निजी npm प्रॉक्सी रजिस्ट्री है। साथ ही यह फ्री और ओपन-सोर्स है। Verdaccio का उपयोग करके यह एक सादे निजी npm रजिस्ट्री के रूप में उतनी परेशानी को शामिल नहीं करता है।

आप इसे अपनी वेबसाइट पर स्थापित करने और चलाने के बारे में विस्तृत जानकारी प्राप्त कर सकते हैं, लेकिन यहाँ चरण हैं:

इसकी आवश्यकता है node >=8.x

    // Install it from npm globally
    npm install -g verdaccio

    // Simply run with the default configuration that will host the registry which you can reach at http://localhost:4873/
    verdaccio

    // Set the registry for your project and every package will be downloaded from your private registry
    npm set registry http://localhost:4873/

    // OR use the registry upon individual package install
    npm install --registry http://localhost:4873

इसका एक डॉकटर भी है, ताकि आप इसे आसानी से अपने सार्वजनिक रूप से उपलब्ध डॉकटर पर प्रकाशित कर सकें और वॉइला आपके पास एक निजी एनपीएम रिपॉजिटरी है, जिसे आप इसे कॉन्फ़िगर करने के साथ-साथ दूसरों को वितरित कर सकते हैं!


0

बहुत आसान -

npm config set registry https://path-to-your-registry/

यह वास्तव में registry = "https://path-to-your-registry"इस लाइन को सेट करता है/Users/<ur-machine-user-name>/.npmrc

सभी मूल्य जो आपने स्पष्ट रूप से सेट किए हैं या डिफ़ॉल्ट रूप से सेट किए गए हैं, द्वारा देखा जा सकता है - npm config list

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