Yüklü tüm node.js modüllerinin bir listesini yazdırın


134

Üzerinde çalıştığım bir node.js betiğinde, tüm node.js modüllerini (npm kullanılarak yüklenmiş) komut satırına yazdırmak istiyorum. Bunu nasıl yapabilirim?

console.log(__filename);

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

Bu durumda, node.js modülleri klasörünün yolunu döndüren bir işlev yazmak faydalı olabilir (eğer mümkünse). Çapraz platform çözümü ideal olacaktır.
Anderson Green

Bir dizinden dosya listesi alma hakkında bilgi: stackoverflow.com/questions/2727167/…
Anderson Green

Yanıtlar:


100

Npm ls kullanın (json çıkışı bile vardır)

Komut dosyasından:

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);

Çalıştırmak:

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

Ayrıca, modüller klasörünün dosya yolunu nasıl elde edebilirsiniz?
Anderson Green

yol node_modules / [modül adı] olacaktır. Bunun tüm platformlarda çalışması gerektiğine inanıyorum. Bu yolla sadece 'yerli' ağaç basılır modülleri ve o Not requreilk node_modules de görünüyor, o zaman ../node_modules, ../../node_modules (bkz nodejs.org/api/... ve sonra NODE_PATH env var itibaren)
Andrey Sidorov

4
npm ls --parseablesadece yolların bir listesini deneyin
Andrey Sidorov

262

Tam TREE olmadan yalnızca global olarak kurulan paketlerle ilgileniyorsanız, o zaman:

npm -g ls --depth=0

veya yerel olarak (-g hariç):

npm ls --depth=0


6
--L veya - uzun olarak belirtmeyi seviyorum npm -g ls --depth=0 --long. Bu, modül açıklamalarını ve github bağlantılarını sağlar.
Adam Caviness

npm lsÖrneklerden tam olarak hoşlanıyorsanız şunu kontrol edin: stackoverflow.com/questions/17937960/…
prosti

48

küresel olarak yüklenmiş tüm üçüncü taraf modüllerin listesi, konsola yazın:

 npm -g ls

28

herhangi bir işletim sisteminde

npm -g list

ve bu kadar


4
Bu komut daha uzun sürecektir npm -g ls --depth=0, çünkü modül bağımlılıklarını da arayacaktır.
Paul Razvan Berg

9

Genel olarak, kurulu paketleri listelemenin iki yolu vardır - Komut Satırı Arayüzü ( CLI ) üzerinden veya API kullanan uygulamanızda .

Her iki komut da stdoutbir ağaç yapısında kurulu paketlerin tüm sürümlerine ve bunların bağımlılıklarına yazdıracaktır .


CLI

npm list

Kullan -gGlobal olarak kurulmuş tüm paketleri listelemek (global) bayrağını kullanın. --depth=0Bağımlılıklarını değil, yalnızca en iyi paketleri listelemek için bayrağı kullanın .


API

Sizin durumunuzda, bunu komut dosyanız içinde çalıştırmak istiyorsunuz, bu nedenle API'yi kullanmanız gerekir. Dokümanlardan:

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

Yazdırmaya ek olarak stdout, veriler de geri aramaya aktarılır.


Npm'nin uygulamalardan erişilebilen bir API'ye sahip olduğunu belirttiğiniz için teşekkür ederiz. Fonksiyonlara argümanları nasıl iletirsiniz? Denedim npm.commands.ls(["depth=0"], ... )ama hata npm.commands.ls(["prod"], ... )veriyor ve boş bir dizi veriyor ....
Giuliano Collacchioni

6

Neden onları yakala değil dependenciesdepackage.json ?

Elbette, bu size yalnızca gerçekte kurtardıklarınızı verecektir, ancak yine de bunu yapmalısınız.

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

Bu size küresel olarak yüklü paketler vermez
Owen J Lamb

Orijinal soru, küresel olarak yüklenmiş paketleri dahil etmek isteyip istemediklerini belirtmez. Bu cevap, diğer cevaplara faydalı bir alternatif sağlar.
Andy Fleming

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

1
Evet, benim Bash günümüzde vardır$()
AT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.