जवाबों:
से NPM-लिंक प्रलेखन :
स्थानीय मॉड्यूल निर्देशिका में:
$ cd ./package-dir
$ npm link
मॉड्यूल का उपयोग करने के लिए परियोजना की निर्देशिका में:
$ cd ./project-dir
$ npm link package-name
या रिश्तेदार रास्तों का उपयोग करते हुए:
$ cd ./project-dir
$ npm link ../package-dir
यह हुड के नीचे दो आदेशों का उपयोग करने के बराबर है।
npm link
बाहरी निर्भरता का एक दूसरा उदाहरण पैदा करेगा। इसलिए यदि आपके पास एक पैकेज है A B और C की आवश्यकता है, B को C की आवश्यकता है। B को जोड़ने से A के C के दो उदाहरण होंगे
आप केवल एक <folder>
तर्क प्रदान करते हैं npm install
, तर्क को पैकेज के नाम के बजाय स्थानीय फ़ोल्डर की ओर इंगित करना चाहिए:
npm install /path
rm -rf node_modules
पहले और npm install
बाद में यह अच्छा है ।
चूँकि उसी व्यक्ति द्वारा पूछा और उत्तर दिया गया था, इसलिए मैं एक विकल्प के रूप में एक npm लिंक जोड़ूँगा ।
डॉक्स से:
यह अपने स्वयं के सामान को स्थापित करने के लिए आसान है, ताकि आप इस पर काम कर सकें और लगातार पुन: निर्माण किए बिना इसे पुन: परीक्षण कर सकें।
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[संपादित करें] NPM 2.0 के रूप में, आप package.json में स्थानीय निर्भरता की घोषणा कर सकते हैं
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
एक बार फ़ोल्डर के विरुद्ध (एक वैश्विक सिम्कलिन बनाने के लिए) चलाने की आवश्यकता है और फिर npm link package-name
प्रोजेक्ट के फ़ोल्डर में (अपनी परियोजना में वैश्विक सिम्लिंक का उपयोग करने के लिए ) चलाने की आवश्यकता है । नीचे दिया गया उत्तर सही उत्तर है।
file:
दृष्टिकोण का उपयोग करके ) ने मेरे ऐप और स्थानीय मॉड्यूल के लिए एक निर्भरता साझा करने की अनुमति दी। npm link
डुप्लिकेट निर्भरता के परिणामस्वरूप मेरा परीक्षण , जो चीजों को तोड़ता है अगर निर्भरता को एक सिंगलटन के रूप में उपयोग करने की आवश्यकता होती है।
npm pack
+ package.json
इसी से मेरा काम बना है:
module project
, निष्पादित करें npm pack
:यह एक निर्माण होगा <package-name>-<version>.tar.gz
फ़ाइल का ।
consumer project
आदर्श रूप में आप ऐसी सभी फाइलों tmp
को अपने consumer-project
रूट में एक फ़ोल्डर में रख सकते हैं :
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
पैकेज:npm install
या npm i
याyarn
consumer-project's node_modules
फ़ोल्डर में उपलब्ध होना चाहिए ।शुभ लाभ...
यदि स्थानीय मॉड्यूल में सहकर्मी निर्भरता है जो आप केवल अपनी परियोजना के दायरे में स्थापित करना चाहते हैं, तो इनमें से कोई भी ( npm link
या package.json
फ़ाइल निर्भरता) कार्य नहीं करता है।
उदाहरण के लिए:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
इस परिदृश्य में, NPM सेट myproject
's node_modules/
इस तरह:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
जब नोड लोड होता है mymodule
और यह होता है require('foo')
, नोड सिम्लिंक को हल करता है mymodule
, और उसके बाद केवल /local/mymodule/node_modules/
(और उसके पूर्वजों) के लिए दिखता है foo
, जो इसे नहीं मिला है। इसके बजाय, हम नोड को देखना चाहते हैं /local/myproject/node_modules/
, क्योंकि यह हमारी परियोजना कहां से चल रही है, और कहां हैfoo
स्थापित है।
इसलिए, हमें या तो नोड को यह बताने के लिए कि इस सीमलिंक को हल नहीं करना है foo
, को खोजने के लिए एक तरीका चाहिए, या हमें फ़ाइल निर्भरता सिंटैक्स में उपयोग किए जाने पर कॉपी की स्थापना के लिए npm को बताने के लिए एक तरीके की आवश्यकता mymodule
है package.json
। मुझे ऐसा करने का कोई तरीका नहीं मिला, दुर्भाग्य से :(
NODE_PATH
कि node_modules/
जहां foo
स्थापित है , वहां इंगित करने के लिए सेट है । तो उपरोक्त मामले के लिए, यह यह होगा: NODE_PATH=/dev/myproject/node_modules/
जो mymodule
खोजने की अनुमति देता है foo
।
जैसा कि पिछले लोगों ने उत्तर दिया है npm --save ../location-of-your-packages-root-directory
। ../location-of-your-packages-root-directory
लेकिन आदेश में यह काम करने के लिए दो बातें होनी चाहिए।
1) package.json
उस निर्देशिका में ओर इशारा किया
2) main
प्रॉपर्टी को package.json
सेट किया जाना चाहिए और काम करना चाहिए "main": "src/index.js",
यदि प्रविष्टि फ़ाइल ../location-of-your-packages-root-directory
है../location-of-your-packages-root-directory/src/index.js