2017-07-15 15 views
7

में "आवश्यक: सत्य" क्या करता है हमारी टीम ने अभी @ 5 पर अपडेट किया है। package-lock.json विंडोज और मैक के बीच एकीकृत था (कुछ निर्भरता वैकल्पिक हैं इसलिए वे विंडोज पर स्थापित नहीं होते हैं, लेकिन वे मैक पर करते हैं) ताकि मशीन चाहे कोई फर्क नहीं पड़ता, हम उसी नोड_मोड्यूल संरचना उत्पन्न करेंगे। यह ठीक तो टीम के सदस्यों के लिए निम्न चरणों के माध्यम से चला गया के प्रत्येक चला गया,:पैकेज-लॉक.जेसन

  1. rm -rf node_modules
  2. git pull
  3. npm install

यह वास्तव में एक को छोड़कर सभी दल के सदस्यों के लिए पूरी तरह से चला गया, जो npm install के बाद एक संशोधित package-lock.json था। एक संशोधित रेखा यह थी कि उसने "requires": true हटा दिया।

तो मैंने देखा:

{ 
    ... 
    "version": "0.0.1", 
    "lockfileVersion": 1, 
    "requires": true, 
    "dependencies": { 
    ... 
} 

लेकिन उन्होंने देखा:

{ 
    ... 
    "version": "0.0.1", 
    "lockfileVersion": 1, 
    "dependencies": { 
    ... 
} 

किसी को भी पता है क्यों requires: true कुछ मशीनों नहीं हैं, लेकिन दूसरों पर package-lock.json फ़ाइल से निकाल दिया जा सकता है? इसके अलावा, इस संपत्ति के बारे में थोड़ा सा स्पष्टीकरण चोट नहीं पहुंचाएगा। :)

अग्रिम धन्यवाद!

+0

मेरे पास एक ही समस्या है। मैं 'नोड 8.1.2' और' npm 5.0.4' का उपयोग कर रहा हूं। अपने दस्तावेज को देखते हुए, किसी भी 'आवश्यकता' का कोई उल्लेख नहीं है। मैं भी उत्सुक हूं कि क्या करता है।ध्यान दें कि, इसे हटाने से वास्तव में कुछ भी तोड़ नहीं आता है (हमारे सीआई और स्टेजिंग सर्वर पर काम करता है) – lkartono

+0

अपडेट: ऐसा लगता है कि यह एनपीएम संस्करण से संबंधित है। बस 'npm 5.1.0' पर अपडेट किया गया और 'आवश्यक: सत्य' गायब हो गया। हालांकि, मेरी सभी निर्भरताओं में अब 'आवश्यकता' कुंजी है। मुझे लगता है कि 'नेस्टेड फोर्स' पैकेज-लॉक.जेसन' को नेस्टेड तरीके, निर्भरताओं की निर्भरताओं में सूचीबद्ध करने की आवश्यकता है। – lkartono

+0

एक पीआर के लिए https://github.com/npm/npm/pull/19307 देखें जो spec फ़ाइल से स्पष्टीकरण को सहायता पृष्ठ –

उत्तर

3

जैसा कि मैंने अपनी टिप्पणियों में संदेह किया है, requires फ़ील्ड 5.1.0 के बाद से जोड़ा गया है। आप देख सकते हैं संबंधित पुल अनुरोध यहाँ https://github.com/npm/npm/pull/17508 (यहाँ दिखाई चैंज https://github.com/npm/npm/releases/tag/v5.1.0)

के शब्दों में यह क्या कहते हैं:

  1. यह एक नया पैकेज का परिचय:

    यह फिक्स के एक मुट्ठी भर है लॉक.जेसन फ़ील्ड, जिसे आवश्यकता है, ट्रैक जो मॉड्यूल को दिए गए मॉड्यूल की आवश्यकता होती है।

  2. .....

संघर्ष के इस तरह से बचने के लिए, मैं तुम्हें (और अपने आप के साथ-साथ) अपने सभी टीम के साथी सुनिश्चित करने के लिए एक ही npm संस्करण उपयोग कर रहे सलाह देते हैं।

अद्यतन

संस्करण 5.1.0 करने के लिए npm अपग्रेड करने के बाद, मुझे याद आ रही निर्भरता (एक कोणीय 4 आवेदन पर काम कर) के साथ समस्या हो गई थी। किसी को भी एक ही समस्या का सामना कर रहा है, तो यहाँ क्या मैं इसे हल करने के लिए किया था:

rm -rf node_modules 
npm prune 
npm install 

आशा है कि यह मदद करता है।

+1

में उत्तर के रूप में स्वीकार करता है, क्योंकि हमें सभी को एक ही एनपीएम संस्करण पर होना आवश्यक था । हमने यह भी पाया कि devdependencies के रूप में सूचीबद्ध सभी निर्भरताओं को समस्याग्रस्त था क्योंकि एनपीएम को देवताओं पर निर्भरता को हल करने में कोई समस्या थी। अंत में, वैकल्पिक मॉड्यूल कुछ मशीनों पर स्थापित हो जाएंगे लेकिन दूसरों को नहीं। एक बार जब हम एनपीएम के एक ही संस्करण पर पहुंचे और निर्भरता तय की, तो अब हम मॉड्यूल अपडेट करने के लिए इन चरणों का पालन करते हैं: 'rm -rf node_modules && npm install --no-altern' – atdrago