2017-06-19 11 views
8

का उपयोग किए बिना फ़ोल्डर स्थापित करते हैं, मैं advice the npm documentation wrote about इस्तेमाल कर सकते हैं:NPM 5 मेरी नोड पुस्तकालय प्रकाशित करने से पहले सिमलिंक

एक स्थानीय स्थापित की जांच के लिए कुछ अन्य फ़ोल्डर में जाते हैं, और उसके बाद कार्य करें:

सीडी। ./some-other-folder

NPM स्थापित ../my-package

NPM का संस्करण 5 से पहले, मैं कोई समस्या नहीं थी के रूप में यह उत्पादन जो मैंने उम्मीद की थी, यानी मैं जो प्रकाशित करूंगा उसके आउटपुट के साथ एक फ़ोल्डर।

NPM स्थापित:

में एक सिमलिंक के रूप में निर्देशिका में पैकेज को स्थापित करें

हालांकि, NPM 5 का उपयोग कर, यह अब अपने स्थानीय परियोजना के लिए एक सिमलिंक NPM दस्तावेज़ में वर्णित बनाता है वर्तमान परियोजना। इसकी निर्भरताओं को इसके लिंक होने से पहले स्थापित किया जाएगा। यदि आपकी प्रोजेक्ट की जड़ के अंदर बैठता है, तो इसकी निर्भरता हो सकती है जो टोपलवेल नोड_मोड्यूल तक पहुंच जाती है क्योंकि वे अन्य प्रकार के निर्भरताओं के लिए होती हैं।

मैं स्थानीय परियोजना को स्थापित करने के "पुराने" तरीके का उपयोग कैसे कर सकता हूं? या यह जांचने का एक नया तरीका है कि मेरी लाइब्रेरी सही है या नहीं?

धन्यवाद।

+1

आप [https://www.npmjs.com/package/install-local ](https://www.npmjs.com/package/install-local) npm मॉड्यूल का उपयोग कर सकते हैं। –

+0

धन्यवाद एक गुच्छा @ हार्दिकमोधा :) –

+0

मैंने इंस्टॉल-लोकल का उपयोग करने की कोशिश की, लेकिन यह सिम्लिंक भी बनाता है ताकि @ हार्डिकमोधा का समाधान 100% काम न करे। स्थानीय निर्भरताओं की निर्भरताओं को स्थापित न करने का यह अवांछित साइड इफेक्ट भी है। – Severun

उत्तर

5

उपयोग npm pack + npm install (के रूप में स्थापित-स्थानीय पैकेज ने सुझाव दिया)

npm pack <path-to-local-package> 
npm install <package-version.tgz> 

यह प्रभावी रूप से node_modules के लिए अपने स्थानीय पैकेज कॉपी कर देंगे। ध्यान दें कि यह केवल उत्पादन प्रासंगिक फ़ाइलों को पैकेज करेगा (जो आपके पैकेज.जेसन के files अनुभाग में सूचीबद्ध हैं)। तो, आप इसे पैकेज की निर्देशिका के तहत एक टेस्ट ऐप में इंस्टॉल कर सकते हैं। कुछ इस तरह:

my-package 
    package.json 
    test 
    test-app 
     package.json 
     node_modules 
     my-package 

यह मानते हुए कि test dir मेरी पैकेज/package.json में files में शामिल नहीं है।

यह एनपीएम 5 और पुराने संस्करणों के साथ समान तरीके से काम करता है।

+0

क्या कोई बेहतर तरीका है? मेरे सेटअप में मेरे पास मेरे सभी संकुल मेरे रेपो में एक ही स्तर पर हैं। मैं मेनपैकेज निर्देशिका में npm install --save ../otherpackage करके depenencies निर्दिष्ट करते हैं। इससे पहले कि कॉपी किया गया ../otherpackage mainpackage/node_modules/अन्यpackage पर, अब यह उस स्थान पर एक सिम्लिंक बनाता है जो ../../otherpackage को इंगित करता है। मेरी समस्या यह है कि जब मुख्यपैकेज/node_modules में सिम्लिंक होते हैं, तो यह nodemon w/an ENOSPC त्रुटि को उड़ाता है। पैक के साथ एक पैकेज बनाने के लिए, फिर npm tgz फ़ाइल स्थापित करें स्वचालित तैनाती के लिए एक समस्या का कारण बनता है। – Severun

+0

बस कोशिश की और यह काम नहीं करता है, क्योंकि अन्य पैकेज पर स्थानीय निर्भरता है ../yetanotherpackage। मुझे त्रुटि मिलती है 'yetanotherpackage "से इंस्टॉल नहीं किया जा सका क्योंकि इसमें पैकेज.जेसन फ़ाइल नहीं है।' – Severun

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