नोड मॉड्यूल को सूचीबद्ध करने का आसान तरीका मेरे पास एनपीएम जुड़ा हुआ है?


123

मैं एक कमांड की तलाश कर रहा हूं जो वैश्विक मॉड्यूल के नामों को सूचीबद्ध करेगा जिनके पास npm linkस्थानीय प्रतियों के लिए है, जो स्थानीय पथ को भी सूचीबद्ध करता है।

वास्तव में, की एक सूची सभी विश्व स्तर पर स्थापित मॉड्यूल और भी बेहतर, के साथ होगा npm link'घ लोगों चिह्नित किये किसी भी तरह।


1
npm -g lsसभी वैश्विक मॉड्यूल को सूचीबद्ध करना चाहिए, लेकिन मुझे नहीं पता कि क्या यह लिंक्ड मॉड्यूल को सूचीबद्ध करता है
Ferdi265

अपने आवेदन के लिए एक "package.json" फ़ाइल बनाए रखें
CM

1
@CeeAim में बहुत सारे पैकेज के साथ मेरे पास बहुत सारे अनुप्रयोग हैं। मैं भी सीएलआई जैसे अन्य उद्देश्यों के लिए काफी वैश्विक मॉड्यूल रखता हूं, और कई फोर्क और npm link'डी' हैं। मुझे ट्रैक रखने का एक तरीका चाहिए।
कॉलम जूल

जवाबों:


64

क्या आपने सिर्फ लिस्टिंग की कोशिश की node_modules निर्देशिका सामग्री (जैसे ls -l node_modules | grep ^l) को ? वे सामान्य सीमलिंक हैं।

यदि आपको वास्तव में सभी सिम्लिंक ढूंढने की आवश्यकता है , तो आप कुछ इस तरह की कोशिश कर सकते हैं find / -type d -name "node_modules" 2>/dev/null | xargs -I{} find {} -type l -maxdepth 1 | xargs ls -l


16
स्थानीय रूप से जुड़े नामांकित मॉड्यूल (@ नाम स्थान / मॉड्यूलनाम) के साथ काम नहीं करता है। एक क्रूर समाधान हो सकता है:( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
एंड्रिया कारारो

2
यह समाधान विंडोज पर काम नहीं करता है (न ही कोई अन्य समाधान)।
मीका झोलटु

2
यदि आप Git bash टर्मिनल का उपयोग करते हैं तो @MicahZoltu यह विंडोज पर काम करेगा
ग्रेग एम।

1
@Scoped पैकेज के लिए, बस l-कमांड में -R जोड़ें:ls -l -R ./node_modules | grep ^l
Romasato

मुझे जवाब मिला कि मेरे लिए काम करने के लिए नीचे stackoverflow.com/a/48593067/7491536
जैक हावर्ड

194

विश्व स्तर पर जुड़े सभी मॉड्यूल को सूचीबद्ध करने के लिए, यह काम करता है (प्रलेखन https://docs.npmjs.com/cli/ls ):

npm ls -g --depth=0 --link=true

मुझे पहले अपनी मशीन पर npm के संस्करण को अपडेट करना था, हालाँकि:

npm install npm@latest -g

15
सबसे सरल समाधान और विंडोज में काम करने के लिए अपवोट किया गया। काश मैं इसे एक से अधिक बार बढ़ा सकता।
आर्टिफ़

पहले वाला w / o काम करता है --link=true। मेरा वातावरण: Win10, NVM = 1.1.7, वर्तमान नोड = 8.14.0
Jeb50

1
और जो सूचीबद्ध है उसे हटाने के लिए:npm unlink <package> -g
zamnuts

@ Jeb50 जो समझ में आता है, क्योंकि लिंक किए गए पैकेज विश्व स्तर पर स्थापित हैं।
कास

20

पार्सिंग lsका एक बेहतर विकल्प findइस तरह का उपयोग करना है:

find . -type l

आप -maxdepth 1केवल पहली निर्देशिका स्तर को संसाधित करने के लिए उपयोग कर सकते हैं :

find . -maxdepth 1 -type l

आप -lsअतिरिक्त जानकारी के लिए उपयोग कर सकते हैं ।

उदाहरण के लिए, नोड मॉड्यूल जो npm से जुड़े हैं, खोजने के लिए:

find node_modules -maxdepth 1 -type l -ls

यहाँ एक लेख है कि पार्स lsकरना सबसे अच्छा विचार क्यों नहीं है


यह मेरे लिए उपयोगी था-
ryanve

13

यदि आप एक अच्छा रंगीन आउटपुट चाहते हैं npm list, तो आप इसे पसंद कर सकते हैं:

\ls -F node_modules | sed -n 's/@$//p' | xargs npm ls -g --depth 0

जो मेरे वर्तमान खेल के मैदान में देता है:

+-- color@0.11.1 
+-- grunt@0.4.5
+-- http-server@0.8.5 
+-- jsdom@8.0.2 
+-- jsonfile@2.2.3 
+-- underscore@1.8.3 
+-- xmlserializer@0.3.3 
`-- zombie@4.2.1 

यह कुछ धारणाएं बनाता है लेकिन इसे ज्यादातर मामलों में काम करना चाहिए, या नीचे दिए गए स्पष्टीकरण के साथ अनुकूलित करना आसान होना चाहिए।

  • \lsअपने lsआदेश पर संभव उपनाम को बायपास करने के लिए उपयोग करें
  • -Fविकल्प एक लिंक के लिए सूचक कहते हैं '@'
  • sedआदेश उन लिंक्स का चयन करता है और सूचक को हटा
  • xargsहिस्से के लिए तर्क के रूप में पिछले उत्पादन गुजरताnpm ...
  • npm के साथ है
    • listया lsसंस्करणों के साथ मॉड्यूल सूचीबद्ध करने के लिए
      • llप्रत्येक सूचीबद्ध मॉड्यूल के बारे में विवरण प्राप्त करने के लिए के साथ बदलें ।
    • -g वैश्विक मॉड्यूल के लिए और
    • --depth 0 उथले लिस्टिंग के लिए (वैकल्पिक)
    • --long false ('सूची' के साथ डिफ़ॉल्ट)।

समस्या: किसी कारण से npm मेरे लिए फिलहाल (गैर-रंगीन) बाहरी प्रविष्टियाँ देता है। वे वे होंगे जिन्हें मैंने " npm अनलिंक किया था " एड किया था।

वर्तमान npm पथ में " सभी विश्व स्तर पर स्थापित मॉड्यूल की सूची " के लिए , आप बस करते हैं

npm list -g

आगे की जरूरतों के लिए आप पर एक नज़र रखना चाहते हो सकता है

npm help folders

जब तक आप अपने पूरे फाइलसिस्टम को स्कैन नहीं करते हैं, तब तक आप पीछे की ओर सहानुभूति का पालन नहीं कर सकते हैं (और फिर यह एक विशिष्ट प्रश्न नहीं है)।

नाम से फ़ाइलों और निर्देशिकाओं को तेज़ी से खोजने के लिए, मैं locateएक दिन में एक बार एक सूचकांक पुनर्निर्माण पर काम करता हूं ।

locate '*/node_modules'

और वहां से काम करना शुरू करें (आप --regexpविकल्प के साथ खोज को परिष्कृत करना चाह सकते हैं ।


मैं -gअपने स्थानीय / निकटतम क्षणिक निर्भरता लिंक प्राप्त करने के लिए बिना उपयोग करता हूं। धन्यवाद!
सकल

4

मुझे यह प्रश्न तब मिला जब मैंने अपना टूल भी लिखा, यहाँ यह पूर्णता के लिए है: npm-list-linked

यह पदानुक्रम में नीचे दिए गए सभी लिंक किए गए पैकेजों का पुनरावर्ती रूप से अनुसरण करेगा, साथ ही मेरे काम में कभी-कभी हो सकता है npm link 2-3 स्तरों को गहरा कर सकते हैं और इस तरह से आप देख सकते हैं कि कौन से स्थानीय हैं और कौन से नहीं हैं, आश्चर्य से बचते हैं।

$ npm-list-linked
Linked packages in /home/user/projects/some-project/
    @prefix/package 0.2.7
        other-package 0.1.2

2

मैंने एक Node.js मॉड्यूल fsबनाया, जो npm linkअन्यथा या किसी और द्वारा बनाए गए सीमलिंक की जांच करने के लिए उपयोग करता है ।

https://www.npmjs.com/package/symlinked

var symlinked = require("symlinked")

console.log(symlinked.names())

2
यदि आप इसके लिए विशेष रूप से मध्यम. com/@maybekatz/… के प्रकाश में एक CLI निष्पादन योग्य जोड़ते हैं, तो वास्तव में मीठा होगा । सीलिंल पैकेजों को खोजने के लिए अधिकांश उपयोग के मामले सीएलआई के हैं।
21:00 पर cchamberlain

किसी कारण से किसी भी लिंक का पता नहीं लगा सका :(
जैकोपेन

@cchamberlain क्या आप API के बाद मॉडल बनाने के लिए मुझे अच्छे CLI टूल की ओर संकेत कर सकते हैं? या github.com/ryanve/symlinked :) में निश्चित रूप से योगदान देने के लिए स्वतंत्र महसूस करें :)
ryanve

@JacopKane क्या आप विवरण के साथ github.com/ryanve/symlinked/issues/new पर कोई समस्या पोस्ट करने में सक्षम हैं ?
१ .

1
@ryanve - किया github.com/ryanve/symlinked/pull/1 - मैं यह भी कहा scoped संकुल समर्थन के बाद से जो काम नहीं कर रहा था। सरल संरचना पर यश! :)
cchamberlain

1

मैं खुद को और दूसरों को इसी सवाल पर बहुत देखता हूं। मैंने अपने लिए एक छोटी सीएलआई लिखी link-status, इस जानकारी को प्रदर्शित करने के लिए बुलाया , इससे दूसरों को भी मदद मिल सकती है! इसे यहाँ देखें!


0
find `npm root -g` -maxdepth 2 -type l

नामांकित पैकेज सहित वैश्विक लिंक दिखाने के लिए।

@ andrew का जवाब कुछ समय काम करता है:

npm ls -g --depth=0 --link=true

लेकिन कुछ अवसरों पर मेरे लिए सहकर्मी की त्रुटियों पर उड़ा दिया। आशा है कि किसी की मदद करता है!

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