npm स्थापित नहीं स्थापित करेगा निर्भरताएँ


256

खिड़कियों पर किसी कारण से जब मैं npm installइसे चलाता हूं तो यह निर्भरता को स्थापित नहीं करेगा । AFAIK यह चाहिए। अगर मैं चलाती npm install --dev हूं तो निर्भरता स्थापित होती है। मुझे समझ में नहीं आता है कि क्यों निर्भरताएं भी npm installस्थापित नहीं होती हैं, लेकिन केवल निर्भरताएं स्थापित करती हैं। क्या कारण हो सकता है? मेरे द्वारा यह कैसे किया जा सकता है?

शायद मेरे package.json के साथ कुछ गलत है ? यह नीचे सूचीबद्ध है यदि यह सहायक हो सकता है:

{
  "name": "try-brunch",
  "version": "0.1.0",
  "private": "true",
  "devDependencies": {
    "brunch": "^2.0.4",
    "cssnano-brunch": "^1.1.5",
    "javascript-brunch": "^1.8.0",
    "sass-brunch": "^1.9.2",
    "uglify-js-brunch": "^1.7.8"
  },
  "dependencies": {
    "jquery": "^2.1.4"
  }
}

5
हमें इसके लिए एक निर्धारण की भी आवश्यकता क्यों है ? यह डिफ़ॉल्ट होना चाहिए! मॉड्यूल के डेवलपर्स के लिएdevDependencies सचमुच निर्भरताएं हैं । मैं इसका उपयोग करने के बजाय इसे इस्तेमाल करने के लिए हम में से अधिकांश को एक मॉड्यूल के रूप में शर्त लगाता हूं । npm install
Константин Ван

कहते हैं कि आप एक ऐप लिखते हैं, और आपको एक लकड़हारा या वेबपैक प्लगइन की आवश्यकता होती है। वे भक्त हैं। जिन्हें स्थापित करने की आवश्यकता है। npm कुछ मामलों में उन्हें स्थापित नहीं करता है।
ट्रिस्टन तजारा

1
मेरा मतलब है, स्थापना के लिए devDependenciesआवश्यक है जब आप पैकेज (आवेदन) लिखते हैं । इसका उपयोग करने की आवश्यकता नहीं है devDependencies। इसलिए अतिरिक्त झंडे लगाने के लिए यह उचित devDependenciesहै। यदि डिफ़ॉल्ट रूप सेnpm install इंस्टॉल किया devDependencies जाता है , तो उपयोगकर्ताओं को अनावश्यक पैकेज भी मिलेंगे।
Константин Ван

प्रलेखित व्यवहार यह है कि जब मैं npm iअपने फ़ोल्डर में करता हूं तो यह py को पकड़ लेता है package.jsonऔर दोनों dep और devdeps को स्थापित करता है। यह काम करने का इरादा है और यह समझ में आता है (उदाहरण के लिए जब मैं ऐसा npm iकरने की git cloneउम्मीद करता हूं, तो मुझे मेरी ज़रूरत है, जैसे वेबपैक प्लगइन्स शामिल हैं)। यह प्रश्न बग को संबोधित करता है, जब वास्तविक व्यवहार उद्देश्य से भिन्न होता है। pls, डॉक्स - docs.npmjs.com/cli/install पर एक नज़र डालें । भक्तों को स्थापित नहीं करने के लिए एक ध्वज है, लेकिन डिफ़ॉल्ट व्यवहार उन्हें स्थापित करने के लिए है, जो सही समझ में आता है और हर कोई उम्मीद करता है
ट्रिस्टन तज़ारा

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

जवाबों:


305

स्थापित करने के लिए एनपीएम डॉक्स की जाँच करें

--productionझंडे के साथ (या जब NODE_ENV पर्यावरण चर उत्पादन के लिए सेट किया गया है), npm devDependencies में सूचीबद्ध मॉड्यूल स्थापित नहीं करेगा। "

यह --only={prod[uction]|dev[elopment]}तर्क NODE_ENV की परवाह किए बिना या तो केवल निर्भरता या केवल गैर-निर्भरता स्थापित करने का कारण होगा। "

आपने कोशिश की है

npm install --only=dev

यदि आप चिंतित हैं कि आपका package.json गलत हो सकता है, तो इसके लिए सबसे अच्छी बात यह है। एक नया फ़ोल्डर बनाएँ, और चलाएँ:

npm init --yes

फिर:

npm install --save-dev brunch@^2.0.4
npm install --save-dev cssnano-brunch@^1.1.5
npm install --save-dev javascript-brunch@^1.8.0
npm install --save-dev sass-brunch@^1.9.2
npm install --save-dev uglify-js-brunch@^1.7.8
npm install jquery@^2.1.4 --save

और आपको जाने के लिए अच्छा होना चाहिए! अन्यथा, अन्य विकल्पों को पोस्ट करता रहेगा।

अपने npm कॉन्फ़िगरेशन की जाँच करें:

npm config list

npm को कमांड लाइन, पर्यावरण चर और npmrc फाइलों से इसकी कॉन्फिग सेटिंग्स मिलती हैं। तो पर्यावरण चर, और npmrc फ़ाइल की जाँच करें ।

फिर भी असफल?

ठीक है, एक नया फ़ोल्डर बनाएं, आदर्श रूप से आपके फाइल सिस्टम पर कहीं और। अर्थात। समान फ़ोल्डर पदानुक्रम में नहीं। उदाहरण के लिए, C: \ myNewFolder - बेस C के करीब: बेहतर ड्राइव करें।

फिर भागो:

npm init --yes

अब चलाएं:

npm install underscore --save

और अंत में:

npm install mocha --save-dev

क्या सब कुछ उम्मीद के मुताबिक काम करता है?

मैं जो करने की कोशिश कर रहा हूं वह यह समझ सकता है कि क्या आपकी समस्या वैश्विक है, या पिछले फ़ोल्डर और निर्भरता के लिए कुछ स्थानीय है।


ट्रिस्टन - क्या यह आपकी स्थिति में मदद करता है? क्या आप उत्तर को सही मान सकते हैं, या फिर मुझे उपरोक्त प्रयास करने का परिणाम बताएं?
23

2
npm install --only = dev इंस्टॉल करता है, लेकिन मैं एक ही बार में dep और devdeps दोनों स्थापित करना चाहूंगा। package.json ठीक प्रतीत होता है, क्योंकि इसे फिर से बनाने से कुछ भी नहीं बदलता है। क्या मैं सही हूं कि NODE_ENV वैश्विक रूप से, डिफ़ॉल्ट मान के रूप में और स्थानीय स्तर पर, परियोजना के लिए मूल्य के रूप में दोनों मौजूद है? मैं खिड़कियों पर इन मूल्यों की जांच और परिवर्तन कहां कर सकता हूं (मैंने देखा है और मेरे पास कोई सिस्टम चर NODE_ENV नहीं है)
ट्रिस्टन

@TristanTzara - मैं इन दिनों मैक पर लगभग विशेष रूप से काम करता हूं। हालाँकि, बीते दिनों की यादों से (NT और XP पर सालों पहले) - क्या आप कमांड प्रॉम्प्ट विंडो में "सेट" जैसा कुछ टाइप कर सकते हैं .. सिस्टम सिस्टम प्रॉपर्टीज जैसी कुछ चीज़ों पर जाएं -> एडवांस्ड -> एनवायरमेंट वेरिएबल्स और वहां अपनी एंट्री चेक करें । आप NODE_ENV के साथ "कुंजी" ढूंढ रहे हैं। मैं अब एक विंडोज़ विकल्प के लिए गूगल करूँगा लेकिन इस मामले में यह मदद करता है।
आर्केलडॉन

यहाँ लिंक - winaero.com/blog/…
arcseldon

@TristanTzara - यह जानना अच्छा है। एक विचार, आपकी निर्देशिका के ऊपर सभी मूल निर्देशिकाओं की जाँच करें जो काम नहीं करती हैं। मौजूदा नोड_मॉडल फ़ोल्डर के लिए देखें ... npm एक निर्भरता को हल करने की कोशिश करते समय ऊपर की ओर खोज करेगा और यह कुछ अजीब हो सकता है जैसे कि यह एक मौजूदा स्थापित मॉड्यूल को निर्देशिका ट्री को आगे बढ़ा रहा है, और इसलिए बच्चे फ़ोल्डर में आपको स्थापित करने से इनकार कर रहा है। । सामान्य स्थान आपके घर की निर्देशिका के अंतर्गत सही है .. मेरे उत्तर को स्वीकार करने के लिए शुभकामनाएँ और धन्यवाद: D
arcseldon

85

जांचें कि क्या npm कॉन्फिग प्रोडक्शन वैल्यू सही पर सेट है। यदि यह मान सत्य है, तो यह देव निर्भरता पर छोड़ देगा।

Daud npm config get production

इसे सेट करने के लिए: npm config set -g production false


मुझे आश्चर्य है कि, अगर npm 5.x और npm 6.x के बीच कहीं, यदि कोई मूल्य निर्धारित नहीं किया गया है, तो डिफ़ॉल्ट trueबजाय हो जाता है false?
जेम्स पेरिह

38

सुनिश्चित करें कि आपके पास you NODE_ENVप्रोडक्शन ’के लिए एनवी चर सेट नहीं है ।

यदि आप करते हैं, तो --devध्वज के बिना देव निर्भरताएं स्थापित नहीं की जाएंगी


मैंने अपने सिस्टम वैरिएबल पर एक नज़र डाली है और मेरे पास यह एक भी नहीं है। शायद मैं गलत जगह देखूं?
ट्रिस्टन तजारा

13
कृपया ध्यान दें कि npm install --devअविकसित रूप से भक्ति स्थापित करता है । यह लगभग कभी भी आप क्या चाहते हैं, और वास्तव में पदावनत है
विनको

धन्यवाद। मुझे नहीं पता था कि यह नियमित रूप से npm इंस्टाल पर असर करेगा, लेकिन यह तर्क है। :)
लोथ्रे १

6
का उपयोग --devविकल्प अस्वीकार्य है। --only=devइसके बजाय का उपयोग करें
सारथ एक

16

मेरे पास package-lock.jsonमेरे पैकेज के पुराने संस्करण से एक फ़ाइल थी । इसे मैंने डिलीट कर दिया और फिर सब कुछ सही तरीके से इंस्टॉल हो गया।


बिंगो! इससे मेरी समस्या हल हो गई। लगता है कि हमें रेपो में यह प्रतिबद्ध होना चाहिए।
रैंडम

9

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। npm install --only=devकाम नहीं किया, और न ही किया npm rebuild। अंत में, मैं को नष्ट करने के लिए किया था node_modulesऔर package-lock.jsonऔर चलाने npm installफिर से। उसने मेरे लिए इसे हल कर दिया।


7

आप स्थापना निर्भरता के लिए संक्षिप्त तरीके का उपयोग केवल विकास के लिए निम्नानुसार कर सकते हैं:

npm i -D <dependencies-names>

सबसे बढ़िया उत्तर। Shpuld शीर्ष पर रहें
wwwwwwwwwwww

6

सुनिश्चित करें कि आपका package.jsonवैध है ...

मुझे निम्नलिखित त्रुटि हुई ...

npm WARN Invalid name: "blah blah blah"

और इसी तरह, devDependenciesस्थापित नहीं होने के कारण ।

FYI करें, package.json"नाम" को बदलकर blah-blah-blahइसे ठीक किया।


0

मेरे पास एक ही मुद्दा है क्योंकि मैंने NODE_ENV=productionडॉकर का निर्माण करते समय सेट किया था । फिर मैं एक और जोड़ देता हूं npm install --only=dev। सब कुछ ठीक काम करता है। मुझे TypeSciprt मॉड्यूल के निर्माण के लिए निर्भरता की आवश्यकता है

RUN npm install
RUN npm install --only=dev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.