2017-07-21 7 views
7

मैं अपनी खुद की रिपॉजिटरीज़ को एक ऐसे प्रोजेक्ट की निर्भरता के रूप में रखना चाहता हूं जिस पर मैं काम कर रहा हूं। अभी मैं ऐसा करने के लिए एनपीएम लिंक का उपयोग कर रहा हूं। इसके अलावा, मैं चाहता हूं कि जब मैं npm इंस्टॉल का उपयोग करता हूं तो मुझे अपने भंडार में प्रकार का डेटा डालने के बजाय मुझे अपने उपयोगकर्ता नाम और पासवर्ड के लिए संकेत देना चाहूंगा। मैं उसको कैसे करू? यह अब ऐसा नहीं करता है।मैं अपने भंडार को package.json में निर्भरता कैसे बना सकता हूं और यह मुझे अपनी जानकारी के लिए संकेत दे सकता है?

मैं रिपोजिटरी की सामग्री को अपने फ़ोल्डर के रूप में दिखाना चाहता हूं समस्या यह है कि जब मैं एनपीएम इंस्टॉल करता हूं तो यह मुझे एनपीएम से त्रुटि संदेशों का एक गुच्छा देता है। तो मैंने दो चीजों की कोशिश की है। सबसे पहले मैं GitHub से एक सार्वजनिक रेपो क्लोनिंग की कोशिश की: अतः package.json में

लोक रेपो Github

, मैं इस तरह ssh प्रयोग किया है:

"dependencies": { 
    "repo_name": "[email protected]:ownername/reponame.git#84876fa5aasf55fssfsfafsa" 

}, 

^ध्यान दें कि डेटा नकली है । # एक प्रतिबद्ध हैश है।

Warning: Permanently added the RSA host key for IP address '$IPADDRESS' to the list of known hosts. 


Permission denied (publickey) 

fatal: Could not read from remote repository. 

Please make sure you have the correct access rights and the repository exists. 

Code 128 

तब मैं HTTPS की कोशिश की, फिर से एक प्रतिबद्ध हैश के साथ:

"dependencies": { 
    "repo_name": "https://github.com/ownername/reponame.git#84876fa5aasf55fssfsfafsa" 

}, 

यह काम किया ..... तरह का

जब मैं NPM स्थापित भागा मुझे इस त्रुटि दे दी है । यह लिंक में रेपो से सभी डिप्टीज़ स्थापित करना प्रतीत होता था, लेकिन repo_name के लिंक में रेपो को क्लोन नहीं किया था, ऐसा लगता है कि यह कुछ भी क्लोन नहीं लग रहा था।

इसलिए मैंने एक अलग रेपो को आजमाने का फैसला किया। अपनी खुद की किसी भी निर्भरता के बिना। मैंने HTTPS का उपयोग किया .... यह काम नहीं किया। (हैश के लिए प्रतिबद्ध के साथ), यह मेरे समान त्रुटि संदेश देता है Bitbucket

जब मैं प्रदान की bitbucket स्ट्रिंग के माध्यम से ssh के माध्यम से मेरे निजी भंडार कोशिश

npm ERR! addLocal Could not install /tmp/npm-11929-4791330b/git-cache-2278328b/38b944c916c18cd4e004f07f2f476a4bb393ff8e 
npm ERR! Linux 4.8.0-58-generic 
npm ERR! argv "$nodepathname" "$npmpathname" "install" 
npm ERR! node v7.0.0 
npm ERR! npm v3.10.8 
npm ERR! code EISDIR 
npm ERR! errno -21 
npm ERR! syscall read 

npm ERR! eisdir EISDIR: illegal operation on a directory, read 
npm ERR! eisdir This is most likely not a problem with npm itself 
npm ERR! eisdir and is related to npm not being able to find a package.json in 
npm ERR! eisdir a package you are trying to install. 

निजी भंडार:

मैं इन त्रुटियों को मिल गया अन्य भंडार के साथ, यह मुझसे कहता है:

Please make sure you have the correct access rights 
npm ERR! code 128 
npm ERR! Permission denied (publickey). 
npm ERR! fatal: Could not read from remote repository. 
npm ERR! 
npm ERR! Please make sure you have the correct access rights 
npm ERR! and the repository exists. 
npm ERR! 
npm ERR! 
npm ERR! If you need help, you may report this error at: 
npm ERR!  <https://github.com/npm/npm/issues> 

यह मुझे एक उपयोगकर्ता नाम या पासवर्ड के लिए संकेत नहीं है।

निजी रेपो पर https का उपयोग करना (हैश के लिए प्रतिबद्ध के साथ, समान रूप से पहले) मेरे मुझे किसी भी उपयोगकर्ता नाम के साथ संकेत दिए बिना एक समान त्रुटि देता है:

remote: Invalid username or password. If you log in via a third party service you must ensure you have an account password set in your account profile. 
npm ERR! code 128 

उत्तर

3

NPM एक उपयोगकर्ता नाम का संकेत करने के लिए कोई तरीका नहीं है या पासवर्ड यह सिर्फ इस तरह से काम करने के लिए डिज़ाइन नहीं किया गया है। आपके काम करने के लिए कुछ तरीके हैं।

1) एक एसएसएच कुंजी उत्पन्न करें (यदि आपने पहले से नहीं किया है) और इसे अपने बिटबकेट में जोड़ें।

2) निजी पैकेज सार्वजनिक (यानी खुला यह स्रोत)

3) निजी NPM पैकेज के लिए भुगतान करते हैं और एक निजी NPM मॉड्यूल प्रकाशित करते हैं।

4) यदि आप ओपन सोर्स प्रोजेक्ट बनाते हैं तो सार्वजनिक एनपीएम पैकेज बनाएं। प्रकाशन के पहले संकुल का परीक्षण करने के लिए आप परियोजना को द्वितीयक प्रोजेक्ट से जोड़ने के लिए अभी भी एनपीएम लिंक का उपयोग कर सकते हैं। निर्भरता आपके फ़ोल्डर के नाम पर आधारित नहीं होगी।

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

यदि आप निजी एनपीएम मॉड्यूल के लिए भुगतान करने से बचने की कोशिश कर रहे हैं, तो व्यक्तिगत रूप से मैं अनुप्रयोगों को अलग-अलग पैकेजों में अलग करने से परेशान नहीं होगा।


बस सभी प्रकार के विस्तार के लिए। हो सकता है कि आप एक मॉड्यूल बनाने की कोशिश कर रहे हैं और ऐसा पहले कभी नहीं किया है, इसलिए मैं इसे समझाऊंगा। यदि आपके पास निजी या सार्वजनिक एप्लिकेशन है (एनपीएम मॉड्यूल नहीं है, और आप सार्वजनिक ओपन सोर्स एनपीएम मॉड्यूल बनाने और उससे लिंक करने की कोशिश कर रहे हैं।)

मान लें कि आपके पास दो फ़ोल्डर्स हैं।

/git/my_application 
/git/my_new_npm_module 

और आपके नए एनपीएम मॉड्यूल में पैकेज.जेसन में पैकेज नाम "नया मॉड्यूल" है। आदेश उपयोग करने के लिए है कि अपने my_application अनुप्रयोग में, आप उस निर्देशिका दर्ज करें और अपने my_application एप्लिकेशन में किसी भी नोड फ़ाइल के भीतर

cd /git/my_application 
npm link ../my_new_npm_module 

अब अपनी NPM मॉड्यूल पर NPM लिंक को चलाने के लिए की आवश्यकता होगी आप उपयोग कर सकते हैं की आवश्यकता होती है ('new- मॉड्यूल '); अपने नए एनपीएम मॉड्यूल से निर्यात किए जाने वाले एक्सेस तक पहुंचने के लिए।

जब आपके अपने पैकेज को सार्वजनिक करना तो आप बस नए मॉड्यूल package.json में संस्करण टैग अपडेट और टाइप

npm publish 
3

आप npm install के बाद Git क्लोन आरंभ करने के लिए postinstall हुक इस्तेमाल कर सकते हैं की जरूरत के लिए तैयार:

"scripts": { 
    "postinstall": "git clone ... node_modules/..." 
} 
3

विशिष्ट समस्या के बारे में googling के बाद, मुझे निम्न लिंक मिला। link

संबंधित मुद्दे

 संबंधित मुद्दे