क्या आप अपने संगठन के लिए npm के साथ उपयोग करने के लिए एक निजी भंडार की मेजबानी कर सकते हैं?


220

Npm एक संगठन के भीतर उपयोग करने के लिए एक महान मंच की तरह लगता है, उत्सुक अगर एक निजी रेपो संभव है, जैसे नेक्सस / मावेन के साथ। Google पर कुछ भी नहीं आता है :(


1
नीचे काफी साफ-सुथरे दस्तावेज हैं, कैसे करें: clock.co.uk/tech-blogs/how-to-create-a-pStreet-npmjs-repository यह उसके जवाब में समझाया गया pvorb के समान है।
ramesh.mimit

2
ध्यान दें कि clock.co.uk पोस्ट npm रजिस्ट्री का एक पूर्ण डुप्लिकेट है। आपकी आवश्यक निर्भरता के स्थानीय कैश के लिए, मैंने जो सबसे अच्छा समाधान पाया है वह npm_lazy हैमेरे कांटे पर डॉक्टर का पालन करना थोड़ा आसान हो सकता है।
जेक बर्गर

1
मुझे पता है कि मुझे चर्चा में थोड़ी देर हो गई है, लेकिन मैं सिर्फ यह जोड़ना चाहूंगा कि हमने हाल ही में अपने (मुफ्त) उत्पाद प्रोगेट में
कार्ल हरनागी

2
जैसा कि नीचे लिखा गया है, नेक्सस अब होस्टेड और प्रॉक्सी npm रेपो का समर्थन करता है।
19ac में Zac थॉम्पसन

8
वर्षों में कई विकल्प उपलब्ध हो गए हैं। इस पर आने वाले किसी भी व्यक्ति को सभी उत्तरों को पढ़ना चाहिए न कि केवल एक जिसे मैंने 2011 में स्वीकार किया था।
adam

जवाबों:


101

मुझे नहीं लगता कि ऐसा करने का कोई आसान तरीका है।

Npm प्रलेखन पर एक नज़र हमें बताता है, कि यह संभव है:

क्या मैं अपनी निजी रजिस्ट्री चला सकता हूं?

हाँ!

सबसे आसान तरीका सोफे डेटाबेस को दोहराने के लिए है, और एपीआई को लागू करने के लिए समान (या समान) डिज़ाइन डॉक्टर का उपयोग करें।

यदि आप आधिकारिक CouchDB से निरंतर प्रतिकृति सेट करते हैं, और फिर अपने आंतरिक CouchDB को रजिस्ट्री कॉन्फ़िगरेशन के रूप में सेट करते हैं, तो आप अपने निजी लोगों के अलावा, किसी भी प्रकाशित पैकेज को पढ़ने में सक्षम होंगे, और डिफ़ॉल्ट रूप से केवल आंतरिक रूप से प्रकाशित करेंगे। यदि आप पूरी दुनिया के लिए एक पैकेज प्रकाशित करना चाहते हैं, तो आप बस --registryउस कमांड के लिए विन्यास को ओवरराइड कर सकते हैं ।

घड़ी ब्लॉग में एक निजी एनपीएम रिपॉजिटरी बनाने के तरीके पर एक उत्कृष्ट ट्यूटोरियल भी है ।

EDIT (2017-02-26):

वास्तव में नया नहीं है, लेकिन अब एनपीएम पर निजी पैकेजों की मेजबानी के लिए भुगतान योजनाएं हैं

इन वर्षों में, NPM कई गैर-Node.js कंपनियों के लिए एक कारक बन गया है, वे भी, विशाल सीमांत पारिस्थितिकी तंत्र के माध्यम से जो NPM पर निर्मित है। यदि आपकी कंपनी पहले से ही जावा प्रोजेक्ट्स को आंतरिक रूप से होस्ट करने के लिए सोनाटाइप नेक्सस चला रही है , तो आप इसका उपयोग आंतरिक एनपीएम पैकेजों की मेजबानी के लिए भी कर सकते हैं।

अन्य विकल्पों में JFrog Artifactory और Inedo ProGet शामिल हैं , लेकिन मैंने उन का उपयोग नहीं किया है।


201

https://github.com/isaacs/npmjs.org/ : npm संस्करण v1.0.26 में आप निजी git रिपॉजिटरी url को अपने package.json फ़ाइलों में निर्भरता के रूप में निर्दिष्ट कर सकते हैं। मैंने इसका इस्तेमाल नहीं किया है, लेकिन प्रतिक्रिया पसंद करूंगा। यहाँ है आपको क्या करने की जरूरत है:

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
    }
}

निम्न पोस्ट इस बारे में बात करती है: डीबग करने योग्य: निजी एनपीएम मॉड्यूल


3
यह एक बड़ी विशेषता है, लेकिन मैंने poverb को स्वीकार कर लिया है क्योंकि मैं एक पूरे एनपीएम रेपो की मेजबानी करने के बारे में पूछ रहा था, एक ला आंतरिक मावेन रेपो
adam

2
नोट: एनपीएम वर्तमान में इन git URL (जैसे 1.2.x या ^ 1.2.3) के साथ संस्करण रेंज निर्दिष्ट करने का समर्थन नहीं करता है। github.com/npm/npm/issues/3328
क्ले

@ सही, आप एक टैग (v0.0.1) निर्दिष्ट कर सकते हैं, हालांकि, है ना?
माचा

हां, आप एक सटीक टैग कर सकते हैं।
क्ले

क्या प्राइवेट रिपॉजिट को प्रमाणित करने के लिए GitHub परिनियोजित कुंजियों का उपयोग करने का कोई तरीका है?
सूर्यकुंडसेन

91

ऐसा करने के लिए npm पैकेज का उपयोग करना आसान है। https://www.npmjs.org/package/sinopia

संक्षेप में, सिनोपिया एक निजी / कैशिंग एनपीएम रिपॉजिटरी सर्वर है जिसे आप शून्य कॉन्फ़िगरेशन के साथ सेटअप कर सकते हैं।

सिनोपिया का उपयोग किया जा सकता है:

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

13
लगता है कि सिनोपिया का अब कोई रख-रखाव नहीं है। आज (7 मार्च 2016) के रूप में 8 महीने पहले अंतिम प्रतिबद्धता थी। यह बहुत अच्छा लग रहा है और अच्छी तरह से काम करता है लेकिन रखरखाव के आसपास सावधान रहना चाहिए।
रे बोयसेन

45
की जाँच करें verdaccio । यह एक सक्रिय रूप से बनाए रखा कांटा है: github.com/verdaccio/verdaccio
रोटारिटी

1
क्या verdaccio "निजी-केवल" कॉन्फ़िगरेशन का समर्थन करता है, जहां यह किसी भी सार्वजनिक रजिस्ट्री को क्वेरी नहीं करेगा?
मार्कसचैबर

1
@MarkusSchaber आप प्रॉक्सी को अन्य रजिस्ट्रियों में अक्षम कर सकते हैं। यह ऑफ़लाइन मोड में भी काम करता है, भले ही प्रॉक्सी नेटवर्क तक पहुंचने की कोशिश करे।
जुआन पिकाडो

1
मैं वास्तव में बात करता हूं कि वेरडाइसियो का जवाब है कि इसका खुद का जवाब है, stackoverflow.com/a/50815174/336753 मैंने पहले यहाँ टिप्पणी पर ध्यान नहीं दिया।
kub1x

40

Verdaccio वही है जिसकी मैं तलाश कर रहा था और वह इसका खुद का जवाब चाहता है;) यह सिनोपिया का सक्रिय रूप से बनाए रखा कांटा है ( यहाँ बहुत उत्कीर्ण उत्तर दिया गया है )। यह एक npm पैकेज के रूप में एक npm रजिस्ट्री है , और इसे पाया जा सकता है

यहाँ: https://github.com/verdaccio/verdaccio ,
यहाँ: https://www.verdaccio.org ,
यहाँ: pnpm i -g verdaccioया
यहाँ:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio


2
यह! धन्यवाद -> डोकर चलाने -यह --rm --detach --name verdaccio -p 4873: 4873 verdaccio / verdaccio
MWM

1
@ मम धन्यवाद। सूची में वर्कर संस्करण जोड़ा गया।
kub1x

28

14 अप्रैल (2015) को, npm निजी मॉड्यूल पेश किए गए थे।

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

  • जितने चाहें उतने निजी पैकेज होस्ट करें
  • उन पैकेजों के लिए रीड एक्सेस या रीड-राइट एक्सेस किसी अन्य भुगतान किए गए उपयोगकर्ता को दें
  • उन अन्य पैकेजों को स्थापित और उपयोग करें जिन्हें अन्य भुगतान किए गए उपयोगकर्ताओं ने आपको पढ़ने के लिए एक्सेस दिया है
  • किसी भी पैकेज पर सहयोग करें जो अन्य भुगतान किए गए उपयोगकर्ताओं ने आपको लिख दिया है

बेशक, यह मुफ़्त नहीं है - वर्तमान में प्रति उपयोगकर्ता 7 डॉलर प्रति माह।

और यह अभी भी एक नई सेवा है। उदाहरण के लिए संगठन खातों के लिए समर्थन गायब है (जून 2015 तक):

वर्तमान में, निजी पैकेज केवल व्यक्तिगत उपयोगकर्ताओं के लिए उपलब्ध हैं, लेकिन संगठन खातों के लिए समर्थन जल्द ही आ रहा है। इस दौरान अपने संगठन के लिए एक उपयोगकर्ता बनाने के लिए स्वतंत्र महसूस करें, और जब समर्थन यहां होता है, तो हम इसे किसी संगठन में अपग्रेड कर सकते हैं।

तो सही नहीं है, जबकि यह आधिकारिक है निजी संकुल को बनाए रखने npm समाधान है, और यह स्वयं इसे उल्लेख के लायक बनाता है।

अपडेट करें

Npm निजी पैकेज अब उपलब्ध हैं, दोनों व्यक्तिगत उपयोगकर्ताओं और संगठनों के लिए योजना के साथ :

  • सार्वजनिक और निजी पैकेजों की असीमित संख्या
  • $ 7 / माह / डेवलपर
  • संगठन नाम के आधार पर एक स्कोप नाम शामिल है
  • @ Org-name / foo पर पहुंच को प्रकाशित और नियंत्रित करें

(अस्वीकरण: npm, Inc. के साथ किसी भी तरह से दूर से संबद्ध नहीं है )


20

निजी एनपीएम रजिस्ट्रियों के समर्थन के साथ रिपोजिटरी प्रबंधक:


4
केवल भुगतान किए गए संस्करण npm रिपॉजिटरी का समर्थन करते हैं; मुक्त संस्करण नहीं है।
बून

12
सोनटाइप नेक्सस 3.0 का मुफ्त संस्करण वास्तव में, एनपीएम रिपोस (बोवर और डॉकटर रिपोज के साथ) का समर्थन करता है।
n8n8baby

10

मुझे लगता है कि इस धागे को एक अद्यतन की आवश्यकता है। यदि आप किसी भी npm रजिस्ट्रियों को देखते हैं जो उपलब्ध हैं, वे बेहद भारी हैं और उन्हें couchdb की आवश्यकता है। Gemfurry और अन्य लोगों को सार्वजनिक रिपॉजिट से बाहर निकलने की जरूरत है। एनपीएम के कुछ शैडो-एनपीएम की हाल की कोई टिप्पणी नहीं है

फिर, हमने रेगी को पाया । इसकी एक अच्छी प्रतिबद्ध गतिविधि है, जिसे स्थापित करना और उपयोग करना बहुत आसान है और इसमें बहुत अच्छा सामुदायिक समर्थन है । इसका बेहद हल्का वजन और आपको काउचडब आदि से निपटना नहीं है।


9

अगर मैं आपके सवाल को अच्छी तरह से नहीं समझता, तो मुझे माफ़ कर दें, लेकिन यहाँ मेरा जवाब है:

आप एक निजी npm मॉड्यूल बना सकते हैं और इसे स्थापित करने के लिए npm के सामान्य कमांड का उपयोग कर सकते हैं। अधिकांश नोड.जेएस उपयोगकर्ता अपने रिपॉजिटरी के रूप में गिट का उपयोग करते हैं, लेकिन आप जो भी रिपोजिटरी काम करते हैं उसका उपयोग कर सकते हैं।

  1. अपने प्रोजेक्ट में, आप एक NPM पैकेज का कंकाल चाहते हैं। अधिकांश नोड मॉड्यूल में रिपॉजिटरी हैं जहां आप देख सकते हैं कि वे एनपीएम (पैकेज.जसन फ़ाइल के साथ कैसे एकीकृत करते हैं, मेरा मानना ​​है कि यह एनपीएम का हिस्सा है और एनपीएम की वेबसाइट आपको बताती है कि एनपीएम पैकेज कैसे बनाया जाता है)
  2. अपने पैकेज को इंटरनेट या अपने नेटवर्क से उपलब्ध कराने के लिए मेक टू टॉक का उपयोग करें और इसे एनपीएम डाउनलोड डाउनलोड करने के लिए स्टेज करें।
  3. एक बार जब आपका पैकेज बन जाता है, तो उपयोग करें

    npm स्थापित * tarball_url *


5
आपको उसका सवाल नहीं मिला, लेकिन जवाब मेरे लिए बहुत उपयोगी है! :)
एडुआर्डो कोस्टा

7

यह सबसे आसान तरीका है जो मुझे पता है - जेमफ्यूरी प्राइवेट एनपीएम रजिस्ट्री के साथ क्लाउड में होस्ट करें ।

यह मुफ़्त है और आप अपने Github खाते से लॉग इन कर सकते हैं। अपने खुद के डेटाबेस को स्थापित करने की तुलना में, आपको बहुत समय बचाना चाहिए।


यह मुफ्त थियो नहीं है।
ITyger

6

हम Sonatype Nexus का उपयोग कर रहे हैं, संस्करण Nexus Repository ManagerOSS 3.6.1-02 है। और मुझे यकीन है कि यह एनपीएम निजी भंडार का समर्थन करता है और पैकेज को कैश करता है।

यहां छवि विवरण दर्ज करें


5

पार्टी के लिए थोड़ा देर से, लेकिन NodeJS (~ 14 नवंबर के रूप में मुझे लगता है) कॉर्पोरेट NPM रिपॉजिटरी का समर्थन करता है - आप उनकी आधिकारिक साइट पर अधिक जानकारी प्राप्त कर सकते हैं ।

सरसरी निगाह से यह प्रतीत होता है कि एनपीएम एनपीएम रिपॉजिटरी के मिररिंग के माध्यम से गिरावट की अनुमति देता है - अर्थात, यह वास्तविक एनपीएम रिपॉजिटरी में पैकेजों को देखेगा यदि यह आपके आंतरिक एक पर नहीं मिल सकता है। बहुत उपयोगी लगता है!

npm एंटरप्राइज़ आपके संगठन के भीतर JavaScript मॉड्यूल को सुरक्षित रूप से साझा करने और वितरित करने के लिए एक ऑन-प्रिमाइसेस समाधान है, जो npm और सार्वजनिक npm रजिस्ट्री को बनाए रखने वाली टीम से है। यह उन टीमों के लिए डिज़ाइन किया गया है जिनकी आवश्यकता है:

निजी मॉड्यूलों का आसान आंतरिक साझाकरण विकास का बेहतर नियंत्रण और वर्कफ़्लो वर्कफ़्लो वर्कफ़्लो सिक्योरिटी सिक्योरिटीज़ ऑफ़ स्ट्राइक सिक्योरिटी फ़ॉर ओपनिंग-सोर्स मॉड्यूल्स कम्प्लायंस फ़ॉर लीगल आवश्यकताओं को होस्ट करने के लिए ऑन-प्रिमाइसेस npmE प्राइवेट npm है

npmE एक npm रजिस्ट्री है जो उसी मानक npm क्लाइंट के साथ काम करती है जो आप पहले से ही उपयोग करते हैं, लेकिन बड़े संगठनों द्वारा आवश्यक सुविधाएँ प्रदान करता है जो अब उत्साहपूर्वक नोड को अपना रहे हैं। यह npm, Inc., npm ओपन सोर्स प्रोजेक्ट के प्रायोजक और सार्वजनिक npm रजिस्ट्री के मेजबान द्वारा बनाया गया है।

दुर्भाग्य से, यह मुफ़्त नहीं है। आप एक परीक्षण प्राप्त कर सकते हैं, लेकिन यह वाणिज्यिक सॉफ्टवेयर है। यह एकल डेवलपर्स के लिए बहुत अच्छा नहीं है, लेकिन यदि आप एक एकल डेवलपर हैं, तो आपके पास GitHub :-) है


3

यह पोस्ट एक निजी रजिस्ट्री को सेटअप करने के तरीके के बारे में बात करती है

  • सुनिश्चित करें कि आपके सिस्टम में couchdb स्थापित है
  • Npmjs.org की प्रतिकृति निम्न कमांड का उपयोग करें

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"

ध्यान दें "continuous":trueकि कमांड में है, यह CouchDB के _changes एपीआई का उपयोग करता है और जब यह एपीआई अधिसूचित होता है तो कोई भी नया बदलाव करेगा।

यदि आप कभी इन प्रतिकृति को रोकना चाहते हैं, तो आप आसानी से जोड़ सकते हैं "cancel":true। फिर स्क्रिप्ट होगी

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"

इसके बाद npmjs.org readme पर जाएं npm (सुनिश्चित करें nodejsऔर gitइंस्टॉल किया गया है) को इंस्टॉल करें। झटका सब कदम है

git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp 
npm install couchapp 
npm install semver 
couchapp push registry/app.js http://localhost:5984/registry 
couchapp push www/app.js http://localhost:5984/registry 

1
Url isaacs.iriscouch.com/registry दुर्भाग्य से अब मृत है। मैंने इसे skimdb.npmjs.com/registry में बदलने की कोशिश की , जो पहली बार में काम करने लगती है, लेकिन यह केवल रजिस्ट्री इंडेक्स की नकल कर रही है और टारबॉल की नहीं ...
fuzzyTew

Couchapp रीडमी राज्यों couchapp अब थोड़े हटा दिया गया है, लेकिन यह भी कहते हैं वर्तमान रास्ता पूरे रजिस्ट्री दर्पण उपयोग करने के लिए है कि NPM-fullfat-रजिस्ट्री
fuzzyTew

मैंने इसके लिए स्थैतिक-रजिस्ट्री का उपयोग किया , जो काउचडब के समाधान के विपरीत बिल्कुल भी कॉन्फ़िगरेशन की आवश्यकता नहीं है।
fuzzyTew


0

यदि आप विकेंद्रीकृत दृष्टिकोण पसंद करते हैं, तो आप आरागॉन पैकेज मैनेजर का भी उपयोग कर सकते हैं:

  1. एपीएम का उपयोग करना: http://blog.aragon.one/use-apm-to-replace-npm-and-other-centralized-package-managers/
  2. एपीएम की तैनाती: https://github.com/aragon/aragonOS#apm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.