सभी स्थापित नोड.जेएस मॉड्यूल की एक सूची प्रिंट करें


134

एक नोड.जेएस स्क्रिप्ट पर जो मैं काम कर रहा हूं, मैं सभी नोड.जेएस मॉड्यूल (एनपीएम का उपयोग करके स्थापित) को कमांड लाइन पर प्रिंट करना चाहता हूं। मैं यह कैसे कर सकता हूँ?

console.log(__filename);

//now I want to print all installed modules to the command line. How can I do this?

इस स्थिति में, यह एक फ़ंक्शन लिखने के लिए उपयोगी हो सकता है जो नोड.जेएस मॉड्यूल फ़ोल्डर का पथ लौटाता है (यदि यह संभव है)। एक क्रॉस-प्लेटफ़ॉर्म समाधान आदर्श होगा।
एंडरसन ग्रीन

निर्देशिका से फ़ाइलों की सूची प्राप्त करने के बारे में जानकारी: stackoverflow.com/questions/2727167/…
एंडरसन ग्रीन

जवाबों:


100

Npm ls का उपयोग करें (यहां तक ​​कि json आउटपुट भी है)

स्क्रिप्ट से:

test.js:

function npmls(cb) {
  require('child_process').exec('npm ls --json', function(err, stdout, stderr) {
    if (err) return cb(err)
    cb(null, JSON.parse(stdout));
  });
}
npmls(console.log);

Daud:

> node test.js
null { name: 'x11', version: '0.0.11' }

इसके अलावा, आप मॉड्यूल फ़ोल्डर की फ़ाइल पथ कैसे प्राप्त कर सकते हैं?
एंडरसन ग्रीन

पथ नोड_मॉड्यूल्स / [मॉड्यूल नाम] होगा। मेरा मानना ​​है कि यह सभी प्लेटफार्मों पर काम करना चाहिए। ध्यान दें कि इस तरह से ही 'स्थानीय' मॉड्यूल पेड़ छपा है, और requrenode_modules पर पहले दिखता है, तो ../node_modules, ../../node_modules (देखें nodejs.org/api/... ) और फिर NODE_PATH env var से
एंड्री सिदोरोव

4
npm ls --parseableसिर्फ रास्तों की सूची के लिए प्रयास करें
एंड्री सिदोरोव

262

यदि आप केवल पूर्ण TREE के बिना विश्व स्तर पर स्थापित पैकेजों में रुचि रखते हैं तो:

npm -g ls --depth=0

या स्थानीय रूप से (omit -g):

npm ls --depth=0


6
मुझे निर्दिष्ट करना पसंद है --l या - लंबे समय तक npm -g ls --depth=0 --long। यह मॉड्यूल विवरण और गिटब लिंक प्रदान करता है।
एडम कैविनेस

अगर आपको npm lsपूर्ण उदाहरण पसंद हैं तो इसे देखें: stackoverflow.com/questions/17937960/…
prosti

48

सभी विश्व स्तर पर स्थापित तीसरे पक्ष के मॉड्यूल की सूची, कंसोल में लिखें:

 npm -g ls


9

सामान्यतया, कमांड पैकेज इंटरफ़ेस ( सीएलआई ) के माध्यम से या एपीआई का उपयोग करके आपके आवेदन में स्थापित पैकेजों को सूचीबद्ध करने के दो तरीके हैं ।

दोनों कमांड stdoutस्थापित किए गए पैकेजों के सभी संस्करणों, साथ ही साथ उनकी निर्भरता, एक ट्री-स्ट्रक्चर में प्रिंट करेंगे ।


CLI

npm list

-gवैश्विक स्तर पर स्थापित पैकेजों को सूचीबद्ध करने के लिए (वैश्विक) ध्वज का उपयोग करें । --depth=0केवल शीर्ष पैकेजों को सूचीबद्ध करने के लिए ध्वज का उपयोग करें न कि उनकी निर्भरता पर।


एपीआई

आपके मामले में, आप इसे अपनी स्क्रिप्ट के भीतर चलाना चाहते हैं, इसलिए आपको API का उपयोग करना होगा। डॉक्स से:

npm.commands.ls(args, [silent,] callback)

मुद्रण करने के अलावा stdout, डेटा को कॉलबैक में भी पास किया जाएगा।


यह निर्दिष्ट करने के लिए धन्यवाद कि npm के पास अनुप्रयोगों से सुलभ API है। आप कार्यों के लिए तर्क कैसे पास करते हैं? मैंने कोशिश की npm.commands.ls(["depth=0"], ... )लेकिन यह मुझे त्रुटि npm.commands.ls(["prod"], ... )देता है और मुझे एक खाली सरणी देता है ....
Giuliano Collacchioni

6

क्यों नहीं से उन्हें हड़पने dependenciesमें package.json?

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

console.log(Object.keys(require('./package.json').dependencies));

यह आपको विश्व स्तर पर स्थापित पैकेज नहीं देगा
ओवेन जे लैंब

मूल प्रश्न निर्दिष्ट नहीं करता है कि वे विश्व स्तर पर स्थापित पैकेजों को शामिल करना चाहते हैं या नहीं। यह उत्तर अन्य उत्तरों के लिए एक सहायक विकल्प प्रदान करता है।
एंडी फ्लेमिंग

3
for package in `sudo npm -g ls --depth=0 --parseable`; do
    printf "${package##*/}\n";
done

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