जो पैकेज में नहीं हैं, उन पैकेजों के नोड_मॉडल्स फ़ोल्डर को कैसे साफ करें?


338

मान लें कि मैं स्थापित करने के लिए मॉड्यूल के साथ npm installलग रहा है कि परियोजना पैकेज package.jsonस्थापित करें। थोड़ी देर बाद मैं देखता हूं कि मुझे कुछ विशिष्ट मॉड्यूल की आवश्यकता नहीं है और इसकी निर्भरता को हटा दें package.json। फिर मैं कुछ अन्य मॉड्यूल निकालता हूं package.jsonक्योंकि उनकी अब कोई आवश्यकता नहीं है और अन्य को विकल्पों के साथ बदल दिया जाता है।

अब मैं node_modulesफ़ोल्डर को साफ करना चाहता हूं ताकि केवल मॉड्यूल package.jsonवहां रहने में सूचीबद्ध हो और बाकी सभी को जाना चाहिए, जैसे कुछ npm clean। मुझे पता है कि मैं उन्हें मैन्युअल रूप से हटा सकता हूं, लेकिन इसके लिए चीनी कार्यक्षमता का उपयोग करने के लिए कुछ अच्छा तैयार करना चाहता हूं।

जवाबों:


407

मुझे लगता है कि आप ढूंढ रहे हैं npm prune

npm prune [<name> [<name ...]]

यह कमांड "एक्सट्रॉनिक" पैकेज हटाता है। यदि एक पैकेज नाम प्रदान किया जाता है, तो केवल आपूर्ति किए गए नामों में से एक से मेल खाने वाले पैकेज हटा दिए जाते हैं।

बाहरी पैकेज वे पैकेज होते हैं जो मूल पैकेज की निर्भरता सूची में सूचीबद्ध नहीं होते हैं।

डॉक्स देखें: https://docs.npmjs.com/cli/prune


1
जहां तक ​​मुझे पता है, नए एनपीएम संस्करण में, सभी निर्भरताएं रूट node_modulesफ़ोल्डर में स्थित हैं , और पहले की तरह नहीं, जहां प्रत्येक निर्भरता थी, यह स्वयं की निर्भरता है अपने स्वयं के node_modulesफ़ोल्डर में स्थापित करें..उनकी निर्भरता की अनगिनत प्रतियों के साथ ... तो क्या npm pruneयह विचार में है? क्योंकि उन गहरी-निर्भरताएँ package.jsonआपके प्रोजेक्ट के मुख्य पर नहीं लिखी गई हैं .. prune को पुनरावर्ती रूप से देखना चाहिए।
vsync

2
@vsync आदेश npm dedupe docs.npmjs.com/cli/dedupe के साथ दोहराव में कमी प्राप्त की जाती है । यह पेड़ पर निर्भरता को आगे बढ़ाते हुए नोड ट्री को सरल बनाने की कोशिश करता है।
knaos

मैंने देखा है कि NPM प्रून आमतौर पर खराब होने वाली चीजों को हटाने में विफल रहता है, जब मेरे कॉर्पोरेट रिपॉजिटरी में कुछ गड़बड़ हो जाती है। फिर मुझे rm-rf करना है। यह अच्छा होगा यदि "दूर उड़ाने वाला हर व्यक्ति हो तो एक ही बार में सब कुछ भूल जाओ" कमांड
ggb667

210

आप अपना node_modules / फ़ोल्डर निकाल सकते हैं और फिर package.json से निर्भरता को पुनर्स्थापित कर सकते हैं।

rm -rf node_modules/
npm install

यह वर्तमान फ़ोल्डर में सभी स्थापित पैकेज मिटा देगा और केवल package.json से निर्भरता स्थापित करेगा। यदि निर्भरताएं पहले से स्थापित की गई हैं, तो एनपीएम दूसरी बार निर्भरता को डाउनलोड करने से बचने के लिए कैश्ड संस्करण का उपयोग करने का प्रयास करेगा।


4
हां, मुझे पता है कि मैं इस पद्धति का उपयोग कर सकता हूं लेकिन मैं उत्सुक हूं कि अभी भी इसके लिए कोई और अधिक सुरुचिपूर्ण समाधान क्यों नहीं है।
सर्गेई बशारोव

क्या फ़ोल्डर को हटाने के अलावा नोड_मॉड्यूल्स को हटाने के लिए वास्तव में कोई एनपीएम कमांड नहीं है?
एंडर्स

4
विंडोज़ प्लेटफ़ॉर्म पर, यह नोड_मॉड्यूल्स थ्रू एक्सप्लोरर या कमांड लाइन को हटाते समय विफल रहता है (क्योंकि कुछ मॉड्यूल का पथ 256 से अधिक लंबा है)। इसे क्लीनर तरीके से करने के लिए npm कमांड होनी चाहिए।
रवि कुमार

9
या rmdir node_modules /s /qविंडोज पर उपयोग कर रहे हैं। superuser.com/a/179661/440976
वेडनी यूरी

5
मुझे लगता है, यह उत्तर बहुत महत्वपूर्ण बिंदु याद कर रहा है: यदि आप यातायात से विवश हैं (यानी आपके पास मोबाइल की तरह महंगा मेगाबाइट-भुगतान कनेक्शन है) और आपके पास बहुत सारे मॉड्यूल हैं, तो यह आपके लिए महंगा हो सकता है , जबकि pruneविकल्प आपको इंटरनेट कनेक्शन की आवश्यकता है।
इवान कोलेमिचेक

102

अपने फ़ोल्डर नेस्टिंग के कारण Windows फ़ोल्डर को हटा नहीं सकता क्योंकि उसका नाम बहुत लंबा है। इसे हल करने के लिए, रिमरफ इंस्टॉल करें:

npm install rimraf -g

rimraf node_modules

8
या सिर्फrm -rf node_modules
कप्पालदेय

16
rm -rf node_modulesखिड़कियों पर काम नहीं करेगा। इस समाधान को देखें: superuser.com/a/179661/440976
वेडनी यूरी

1
win7 x64 रिम्राफ ने पॉवरशेल के माध्यम से बहुत अच्छा काम किया .. धन्यवाद
गोरिल्ला

सीएमडी के माध्यम से विंडोज 10 64-बिट के लिए सबसे अच्छा समाधान
मैट क्रॉमवेल

rm -rf node_modules मेरे लिए विंडोज 10 पर काम नहीं करते। लेकिन रिम्राफ ने मेरे लिए काम किया
ssmsnet

24

सरल बस चलाते हैं

rm -r node_modules

वास्तव में, आप इसके साथ किसी भी फ़ोल्डर को हटा सकते हैं।

जैसे rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDelete

बस फ़ोल्डर के रूट में gitbash मूव खोलें और इस कमांड को रन करें

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


2
काम नहीं करता है, मुझे एक "अनुमति अस्वीकृत" त्रुटि मिलती है (gitbash का उपयोग करते हुए।
drake035

3
व्यवस्थापक मोड में खुला gitbash। मुझे लगता है कि मदद मिलेगी। या फ़ोल्डर अनुमति स्तर सेटिंग बदलें
अजय कोटनाला

3
यह सभी पैकेजों को हटा देगा । ओपी स्पष्ट रूप से कहता है "मैं नोड_मॉडल फ़ोल्डर को साफ करना चाहता हूं ताकि केवल पैकेज में सूचीबद्ध मॉड्यूल। वहां रहें।"
बोअज

उस स्थिति में मेरे दोस्त आप बस "npm संकुलन_नाम की स्थापना रद्द करें" या - उपसर्ग के रूप में कर सकते हैं जो पैकेज.जॉन फ़ाइल से इसके प्रवेश को हटा देगा। NPM स्थापना रद्द करें PACKAGE_NAME (हटाना पैकेज) NPM स्थापना रद्द करें PACKAGE_NAME --save (हटाना पैकेज और पैकेज json में निर्भरता से निकालें प्रवेश) NPM स्थापना रद्द करें PACKAGE_NAME --save-देव (हटाना पैकेज और पैकेज json में devdependencies से निकालें प्रवेश)
अजय कोटनाला

22

विश्व स्तर पर पहली बार रिमर स्थापित करें

npm install rimraf -g

cmd का उपयोग करके उस पथ पर जाएं जहां आपका नोड_मॉडल फ़ोल्डर है और कमांड के नीचे लागू होता है

rimraf node_modules

अच्छा जवाब, लेकिन अन्य लोगों की स्थापना रद्द करने के लिए एक पैकेज स्थापित करना हालांकि एक अच्छा विचार नहीं है। npm pruneएक आदर्श समाधान है।
बिनायक गौरी शंकर

हां, लेकिन यदि आप अपने प्रोजेक्ट से नोड_मॉडल फ़ोल्डर को हटाना चाहते हैं तो यह सबसे अच्छा और आसान तरीका है।
अंकित परमार


9

संस्करण 6.5.0 एनपीएम से clean-installसभी पैकेजों को ताज़ा करने के लिए कमांड का समर्थन करता है


1
मुझे ठीक इसी की आवश्यकता थी। जब मैं नोड को अपडेट करता हूं, तो पहली चीज यह होती है कि "ऐसा लगता है कि आपने 'एनपीएम इंस्टॉल' चलाने के बाद से अपना वातावरण बदल दिया है।" चूंकि मैं पहले से ही सांत्वना में हूं, इसलिए पहले फ़ोल्डर्स को हटाने के बजाय सिर्फ साफ-सुथरा करना आसान है, आदि
जारोड मैकगायर

3

मैंने package.json के अंदर कुछ पंक्तियाँ जोड़ी हैं:

"scripts": {
  ...
  "clean": "rmdir /s /q node_modules",
  "reinstall": "npm run clean && npm install",
  "rebuild": "npm run clean && npm install && rmdir /s /q dist && npm run build --prod",
  ...
}

यदि आप cleanकेवल आप यह उपयोग करना चाहते हैं rimraf node_modulesया कर सकते हैं rm -rf node_modules

यह बढ़िया काम करता है


2

विंडोज उपयोगकर्ता के लिए, यहाँ सूचीबद्ध ऐसे फ़ोल्डर को हटाने के लिए वैकल्पिक समाधान: http://ask.osify.com/qa/567

उनमें से, एक नि: शुल्क उपकरण: लॉन्ग पाथ फिक्सर कोशिश करने के लिए अच्छा है: http://corz.org/windows/software/accessories/Long-Path-Fixer-for-Windows.php


1

इसके बारे में मुझे सबसे अच्छा लेख यह मिला है: https://trilon.io/blog/how-to-delete-all-nodemodules-recursively

कंसोल से सभी और किसी भी फ़ोल्डर बिंदु से निष्पादित करना आसान है।

लेकिन लेख के सारांश के रूप में, यह कमान node_moduleविभिन्न परियोजनाओं में पाए जाने वाले प्रत्येक फ़ोल्डर के लिए आकार खोजने के लिए है ।

find . -name "node_modules" -type d -prune -print | xargs du -chs

और वास्तव में उन्हें हटाने के लिए:

find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;

लेख में विंडो शेल के लिए निर्देश भी हैं।


0

पैकेज-लॉक में जिन पैकेजों की जरूरत नहीं है उन्हें निकालें / संपादित करें। पैकेज (पैकेज के नाम निर्भरता और अवमूल्यन के तहत लिखे जाएंगे) और फिर

npm install


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