मैं ऐसा कुछ करना चाहता हूं, इसलिए इसकी निर्भरता npm install
भी अधिक या महत्वपूर्ण रूप package.json
से स्थापित करता है ../somelocallib
।
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
मैं ऐसा कुछ करना चाहता हूं, इसलिए इसकी निर्भरता npm install
भी अधिक या महत्वपूर्ण रूप package.json
से स्थापित करता है ../somelocallib
।
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
जवाबों:
यह सुविधा एनपीएम के 2.0.0 संस्करण में लागू की गई थी । उदाहरण:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
निम्न पथों में से कोई भी मान्य हैं:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
स्थानीय पैकेज दिया जाएगा प्रतिलिपि बनाई करने के लिए उपसर्ग ( ./node-modules
)।
somelocallib
अपने package.json
सामान्य के रूप में निर्भरता के रूप में रखो :
"dependencies": {
"somelocallib": "0.0.x"
}
फिर चलाएं npm link ../somelocallib
और npm उस संस्करण को स्थापित करेंगे जिसे आप एक सिमलिंक के रूप में काम कर रहे हैं ।
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
संदर्भ: लिंक (1)
npm dedup
इस समस्या को ठीक करने के लिए उपयोग कर सकते हैं । npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
विवरण कहते हैं कि वर्तमान परियोजना में
अब अपने package.json
सीधे स्थानीय नोड मॉड्यूल संस्थापन पथ को निर्दिष्ट करना संभव है । डॉक्स से:
स्थानीय पथ
संस्करण 2.0.0 के रूप में आप एक स्थानीय निर्देशिका को एक पथ प्रदान कर सकते हैं जिसमें एक पैकेज होता है। इनमें से किसी भी रूप का उपयोग करके स्थानीय रास्तों को बचाया जा सकता है
npm install -S
याnpm install --save
:../foo/bar ~/foo/bar ./foo/bar /foo/bar
किस मामले में उन्हें एक रिश्तेदार पथ के लिए सामान्यीकृत किया जाएगा और आपके साथ जोड़ा जाएगा
package.json
। उदाहरण के लिए:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
यह सुविधा स्थानीय ऑफ़लाइन विकास और परीक्षण बनाने के लिए सहायक है, जिसमें एनपीएम स्थापित करने की आवश्यकता होती है जहां आप एक बाहरी सर्वर को हिट नहीं करना चाहते हैं, लेकिन इसका उपयोग सार्वजनिक रजिस्ट्री में पैकेज प्रकाशित करते समय नहीं किया जाना चाहिए।
"bar": "file:///home/user/src/foo/bar"
node:onbuild
छवियां केवल वर्तमान निर्देशिका की प्रतिलिपि बनाती हैं, और इस प्रकार कुछ भी बाहर छोड़ देती हैं ../foo
।
npm install
LAN पर या किसी अन्य git रिपॉजिटरी से लेते हैं ? जब मैं ऊपर और npm को git + ssh से संस्थापित करने की कोशिश करता हूँ तो यह नोड_मॉड्यूल निर्देशिका में दिखता है और git + ssh पर जाने का प्रयास नहीं करता है, भले ही मैं शीर्ष स्तर के पैकेज को कैसे स्थापित कर रहा हूँ।
यह मेरे लिए काम करता है।
अपने package.json फ़ाइल में निम्नलिखित रखें
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
मॉड्यूल फ़ोल्डर में हटा दिया गया, .npmignore
और पहली बार जब मैंने इसे चलाया तो इसे छोड़कर सभी फ़ोल्डरों पर 777 पुनरावर्ती रूप से लागू किया गया node_modules
। लेकिन हां, इसने आश्रितों को स्थापित किया। एनपीएम संस्करण 1.4.14 का उपयोग करना।
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
का लाभ यह है कि आपको npm install
अपनी निर्भरता प्राप्त करने के लिए प्रत्येक बार करने की आवश्यकता नहीं है ।
यदि आप इसे और अधिक स्वचालित करना चाहते हैं, क्योंकि आप अपने मॉड्यूल को संस्करण नियंत्रण में देख रहे हैं, और npm लिंक को याद रखने वाले देवों पर भरोसा नहीं करना चाहते हैं, तो आप इसे अपने पैकेज में जोड़ सकते हैं। "स्क्रिप्ट" खंड।
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
यह हैकी से परे लगता है, लेकिन यह "काम" लगता है। इस npm मुद्दे से टिप मिला: https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
और postupdate
के बजाय preinstall
और preupdate
?
यह है कि आप स्थानीय निर्भरता कैसे जोड़ेंगे:
npm install file:src/assets/js/FILE_NAME
इसे NPM से package.json में जोड़ें:
npm install --save file:src/assets/js/FILE_NAME
सीधे इस तरह से package.json में जोड़ें:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
यहाँ पैकेज है। आप मास्टर प्रोजेक्ट के लिए उपयोग करेंगे।
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
वहाँ, ./somelocallib
पुस्तकालय फ़ोल्डर में संदर्भ है मास्टर परियोजना package.json के सापेक्ष के रूप में ।
संदर्भ: https://docs.npmjs.com/files/package.json#local-paths
अपने पुस्तकालय की निर्भरता को संभालें।
दौड़ने के अलावा npm install
, आपको दौड़ने की आवश्यकता होगी (cd node_modules/somelocallib && npm install)
।
यह एनपीएम के साथ एक ज्ञात बग है।
संदर्भ: https://github.com/npm/npm/issues/1341 (अधिक अप-टू-डेट संदर्भ की मांग)
अपने मास्टर package.lock
और somelocallib/package.lock
अपने स्रोत कोड प्रबंधक में जाँच करें।
फिर अपने डॉकरीफाइल उपयोग में:
FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...
मैं अपने (cd A && B)
निर्माण में कोष्ठक का उपयोग करता हूं ताकि ऑपरेशन को बेकार बनाया जा सके।
मुझे पता है कि npm install ../somelocallib
काम करता है।
हालाँकि, मुझे नहीं पता कि आप प्रश्न में जो सिंटैक्स दिखाते हैं वह काम करेगा या नहीं package.json
...
दुर्भाग्य से, डॉक्टर केवल निर्भरता के रूप में URL का उल्लेख करते हैं।
प्रयत्न file:///.../...tar.gz
, एक ज़िपित स्थानीय दायित्व की ओर इशारा करते हुए ... और हमें बताएं कि क्या यह काम करता है।
यह मेरे लिए काम करता है: पहले, सुनिश्चित करें कि npm निर्देशिकाओं का सही उपयोगकर्ता है
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
फिर आपके पैकेज में आपका। Json डायरेक्टरी को लिंक करता है
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
।
दरअसल, npm 2.0 के रूप में, अब स्थानीय पथों का समर्थन है ( यहां देखें )।
जिज्ञासु ..... कम से कम विंडोज पर (मेरा npm है 3.something) मुझे यह करने की आवश्यकता है:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
जब मैंने ऐसा किया तो npm install ../module1 --save
इसका परिणाम पूर्ण पथ था और दस्तावेज के सापेक्ष नहीं।
मैंने थोड़ा और गड़बड़ किया और यह निर्धारित किया कि ../xxx
पर्याप्त था।
विशेष रूप से, मेरे पास d: \ build \ mod1, d: \ build \ मॉड्यूल 2 और मेरे नोड प्रोजेक्ट (एप्लिकेशन) के लिए d: \ build \ nodeApp कहने के लिए स्थानीय नोड मॉड्यूल हैं।
'स्थापित' करने के लिए, मैं:
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
मॉड्यूल 1 के पैकेज.जॉन में "मॉड्यूल 2" की एक निर्भरता है: "../module2"; मॉड्यूल 2 की कोई स्थानीय निर्भरता नहीं है; नोडएप की निर्भरता "मॉड्यूल 1": "../module1" और "मॉड्यूल 2": "../module2" है।
सुनिश्चित नहीं है कि यह केवल मेरे लिए काम करता है क्योंकि सभी 3 फ़ोल्डर्स (मॉड्यूल 1, मॉड्यूल 2 और नोडएपी) उसी स्तर पर बैठते हैं ......।
पूर्ण स्थानीय विकास के लिए दो चरण: