क्या Node.js प्रोजेक्ट से सभी अप्रयुक्त (अघोषित) निर्भरता को अनइंस्टॉल करने का एक तरीका है (जो अब मेरे में परिभाषित नहीं हैं package.json
।) जब मैं अपने आवेदन को अपडेट करता हूं तो मुझे लगता है कि अप्रयुक्त पैकेजों को स्वतः हटा दिया जाना पसंद है।
क्या Node.js प्रोजेक्ट से सभी अप्रयुक्त (अघोषित) निर्भरता को अनइंस्टॉल करने का एक तरीका है (जो अब मेरे में परिभाषित नहीं हैं package.json
।) जब मैं अपने आवेदन को अपडेट करता हूं तो मुझे लगता है कि अप्रयुक्त पैकेजों को स्वतः हटा दिया जाना पसंद है।
जवाबों:
नोट : हाल के npm
संस्करण पैकेज-लॉक सक्षम होने पर स्वचालित रूप से ऐसा करते हैं, इसलिए --production
ध्वज के साथ विकास पैकेजों को हटाने के अलावा यह आवश्यक नहीं है ।
npm prune
में सूचीबद्ध नहीं किए गए मॉड्यूल को निकालने के लिए चलाएँ package.json
।
से npm help prune
:
यह कमांड "एक्सट्रॉनिक" पैकेज हटाता है। यदि पैकेज नाम प्रदान किया जाता है, तो केवल आपूर्ति किए गए नामों में से एक से मेल खाने वाले पैकेज हटा दिए जाते हैं।
बाहरी पैकेज वे पैकेज होते हैं जो मूल पैकेज की निर्भरता सूची में सूचीबद्ध नहीं होते हैं।
यदि
--production
ध्वज निर्दिष्ट किया गया है, तो यह कमांड आपकी देवनिर्भरता में निर्दिष्ट पैकेजों को हटा देगा।
package.json
। क्या वह सही है? इसलिए, अगले अपडेट या इंस्टॉल को उन्हें फिर से स्थापित करना होगा।
node_modules
निर्देशिका के अंदर संग्रहीत होती हैं , इसलिए उन्हें मॉड्यूल के साथ हटा दिया जाता है।
package.json
, लेकिन बोवर छोड़ देता हूं । जब मैं दौड़ता हूं npm prune
, तो मुझे उम्मीद है कि कर्म के सभी, अपने स्वयं के node_modules
फ़ोल्डर में, जिसमें इसकी निर्भरताएं हैं, हटाए जाएंगे। बावर की निर्भरता के बारे में क्या है (बोवर-जोंस, बोवर-लॉगर, चामोदर, फ्लेस्टेर, ग्लोब, एट अल।)। तकनीकी रूप से, वे मेरे प्रोजेक्ट में सूचीबद्ध नहीं हैं package.json
। उन्हें हटाया जाता है या नहीं?
node_modules
, लेकिन अंदर से node_modules/bower/node_modules
, "संरक्षित" द्वारा node_modules/bower/package.json
। आपके पैकेज की निर्भरता और आपके पैकेज की निर्भरता मिश्रित नहीं हैं ।
यदि आप ऐसा करने के लिए कुछ मिनट के समय के बारे में चिंतित नहीं हैं, तो एक समाधान होगा rm -rf node_modules
और npm install
स्थानीय मॉड्यूल को फिर से बनाना होगा।
node_modules
भी पुष्टि करता है कि package.json
फ़ाइल एक प्रतिलिपि प्रस्तुत करने योग्य निर्भरता ग्राफ का वर्णन करती है। अपने को हटाना और फिर से स्थापित करना node_modules
मूल रूप से एक तैनात परीक्षा है।
npm prune
एक iota की मदद नहीं की, लेकिन यह किया। मेरी समस्या एक टूटी हुई सहानुभूति थी।
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
यह कमांड "एक्सट्रॉनिक" पैकेज हटाता है। यदि पैकेज नाम प्रदान किया जाता है, तो केवल आपूर्ति किए गए नामों में से एक से मेल खाने वाले पैकेज हटा दिए जाते हैं।
बाहरी पैकेज वे पैकेज होते हैं जो मूल पैकेज की निर्भरता सूची में सूचीबद्ध नहीं होते हैं।
यदि -प्रोडक्शन ध्वज निर्दिष्ट किया गया है या NODE_ENV पर्यावरण चर उत्पादन के लिए सेट किया गया है , तो यह कमांड आपके देवनिर्भरता में निर्दिष्ट संकुल को हटा देगा । स्थापना --no-उत्पादन नकारना होगा NODE_ENV करने के लिए सेट किया जा रहा उत्पादन ।
यदि -dry-run ध्वज का उपयोग किया जाता है, तो वास्तव में कोई परिवर्तन नहीं किया जाएगा।
यदि --json ध्वज का उपयोग किया जाता है तो परिवर्तन किए गए npm prune (या --dry-run के साथ किए गए ) JSON ऑब्जेक्ट के रूप में मुद्रित किए जाते हैं।
पैकेज-लॉक के साथ सामान्य संचालन में सक्षम होने पर, बाहरी मॉड्यूल स्वचालित रूप से छंट जाते हैं जब मॉड्यूल स्थापित होते हैं और आपको केवल -प्रोडक्शन ध्वज के साथ इस कमांड की आवश्यकता होगी ।
यदि आपने पैकेज-लॉक को अक्षम कर दिया है, तो बाहरी मॉड्यूल को हटाया नहीं जाएगा और उन्हें हटाने के लिए समय-समय पर npm prune चलाने के लिए आप पर निर्भर है ।
npm dedupe
npm ddp
स्थानीय पैकेज ट्री को खोजता है और निर्भरता को आगे बढ़ाकर समग्र संरचना को सरल बनाने का प्रयास करता है, जहां वे कई निर्भर पैकेजों द्वारा अधिक प्रभावी ढंग से साझा किए जा सकते हैं।
उदाहरण के लिए, इस निर्भरता ग्राफ पर विचार करें:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
इस स्थिति में, npm-dedupe पेड़ को निम्न में बदल देगा:
a
+-- b
+-- d
`-- c@1.0.10
नोड के मॉड्यूल लुकअप के पदानुक्रमित प्रकृति के कारण, बी और डी दोनों को पेड़ के मूल स्तर पर एकल सी पैकेज से मिले उनकी निर्भरता मिलेगी।
समर्पण एल्गोरिथ्म पेड़ चलता है, प्रत्येक निर्भरता को जहां तक संभव हो पेड़ में ऊपर की ओर बढ़ रहा है, भले ही डुप्लिकेट न मिले। यह एक सपाट और कटे-फटे पेड़ के रूप में परिणत होगा।
node_modules
जब आप संबंधित से हटाए जाते हैं, तो क्या आप फ़ोल्डर्स को हटाने से मतलब रखते हैंpackage.json
?