Temukan versi paket npm yang diinstal

2200

Bagaimana menemukan versi paket node.js / npm yang diinstal ?

Ini mencetak versi npm sendiri:

npm -v <package-name>

Ini mencetak kesalahan samar:

npm version <package-name>

Ini mencetak versi paket pada registri (yaitu versi terbaru yang tersedia):

npm view <package-name> version

Bagaimana cara mendapatkan versi yang diinstal ?

Laurent Couvidou
sumber
5
Pada instalasi saya, "npm -v <package-name>" melaporkan versi npm, dengan sendirinya. Untuk daftar versi terbaru dari sebuah paket di registri, saya telah menemukan bahwa "npm view versi <package-name>" menyelesaikan pekerjaan.
David A. Gray
15
npm showmenunjukkan yang terbaru dalam npm, tidak diinstal
Tsagana Nokhaeva

Jawaban:

2579

npm listuntuk paket lokal atau npm list -guntuk paket yang diinstal secara global.

Anda dapat menemukan versi paket tertentu dengan memberikan namanya sebagai argumen. Misalnya, npm list gruntakan menghasilkan:

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1

Atau, Anda bisa menjalankan npm listtanpa melewati nama paket sebagai argumen untuk melihat versi semua paket Anda:

├─┬ cli-color@0.1.6 
 └── es5-ext@0.7.1 
├── coffee-script@1.3.3 
├── less@1.3.0 
├─┬ sentry@0.1.2 
 ├── file@0.2.1 
 └── underscore@1.3.3 
└── uglify-js@1.2.6 

Anda juga dapat menambahkan --depth=0argumen ke daftar paket yang diinstal tanpa ketergantungannya.

TheHippo
sumber
126
Di mac dan linux ada baiknya menambahkan "| grep module_name", untuk memfilter versi modul yang diinginkan. Terutama ketika menjalankan secara global dengan -g. Sebagai contoh: "daftar npm -g | grep express" untuk mendapatkan versi express yang diinstal.
guya
103
Jika Anda menginginkan modul tertentu, Anda dapat menjalankannya seperti npm list less-middlewarecontoh.
juanpaco
13
Kiat Per @ guya untuk sistem berbasis * nix, pada Windows Anda dapat menggunakan PowerShell untuk hasil yang serupa: | select-string module_nameuntuk memfilter modul. Atau, jika Anda menggunakan Git Bash (atau hanya Bash, dalam hal ini), Anda dapat menggunakannya grep.
Noel
15
Jika Anda tidak dapat mengingat list, npm lsjuga berfungsi. Bahkan, banyak perintah npm memiliki alias, dan terlebih lagi, jika Anda mengetikkan substring pada sebuah perintah, jika substring ini tidak ambigu, ia juga akan berfungsi; misalnya npm ls, npm list, npm lissemua sama. Jika Anda ingin lebih banyak keluaran verbose, coba npm ll(tetapi mungkin Anda ingin --depth=0menambahkannya).
jakub.g
4
Outputnya bukan yang terbaik untuk parsing dengan skrip. Apakah benar-benar tidak ada cara untuk mendapatkan keluaran yang hanya versi paket tanpa harus melakukan sesuatu sepertinpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne
868

Cara cepat lain untuk mengetahui paket apa yang diinstal secara lokal dan tanpa ketergantungannya adalah dengan menggunakan:

npm list --depth=0

Yang memberi Anda sesuatu seperti

├── bower@0.8.6
├── grunt@0.4.1
├── grunt-bower-requirejs@0.4.3
├── grunt-contrib-clean@0.4.1
├── grunt-contrib-coffee@0.7.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-imagemin@0.1.4
├── grunt-contrib-jshint@0.1.1
├── grunt-contrib-livereload@0.1.2
├── grunt-contrib-requirejs@0.4.1
├── grunt-regarde@0.1.1
└── grunt-svgmin@0.1.0

Jelas, hal yang sama dapat dilakukan secara global npm list -g --depth=0.

Metode ini lebih jelas jika Anda telah menginstal banyak paket.

Untuk mengetahui paket mana yang perlu diperbarui, Anda bisa menggunakan npm outdated -g --depth=0.

Patrik Affentranger
sumber
14
itu memberi saya sama seperti tanpa --depth
ygaradon
7
sepertinya mereka sudah memperbaikinya di npm 1.4.6. Lihat github.com/npm/npm/issues/4733
Howie
7
Bekerja sangat baik dengan| grep <package_name>
Marco Prins
4
@ygaradon Benar, tetapi --depth=0membuatnya lebih cepat, karena tidak harus memuat dependensi secara rekursif
Marco Prins
npm list -g --depth=0untuk modul daftar dipasang secara global
EdgeDev
220

npm view <package> version - mengembalikan versi terbaru yang tersedia pada paket.

npm list --depth=0 - Mengembalikan versi semua modul yang diinstal tanpa dependensi.

npm list - Mengembalikan versi semua modul dan dependensi.

Dan terakhir untuk mendapatkan versi simpul: node -v

Salvador Dali
sumber
16
npm lihat versi <package>, masuk ke registry npm remote, bukan sistem file lokal ...
Alexander Mills
@AlexanderMills Benar, tetapi memilikinya di sini menghindari pencarian lain untuk itu. Btw, npm v, npm infodan npm showsemua alias npm view.
CPHPython
85
npm info YOUR_PACKAGE version

misalnya

npm info grunt version
0.4.5
David Beckwith
sumber
105
Ini tidak menunjukkan versi paket yang diinstal, itu hanya menunjukkan versi terbaru yang tersedia.
Tanner Semerad
Setuju dengan @ tanner-semerad. Saya memeriksa ke dalam Documents of npm untuk mengklarifikasi . npm infoadalah alias untuk npm viewdan di dalam Documents dari npm Anda akan menemukan posisi itu: Perintah ini menampilkan data tentang suatu paket dan mencetaknya ke aliran yang dirujuk oleh outfd config, yang secara default adalah stdout. [...] Versi standar adalah "terbaru" jika tidak ditentukan. Begitulah cara saya memilih.
dannydedog
Menunjukkan versi terbaru yang tersedia, bukan yang terbaru diinstal. Diturunkan.
lofihelsinki
2
npm info YOUR_PACKAGE versionSatu-satunya yang bekerja :)
GOXR3PLUS
sama, 'npm info YOUR_PACKAGE versi' Satu-satunya yang berfungsi
Jonas
63

Saya baru saja digunakan

npm list | grep <package name>

dan itu bekerja dengan baik

Di windows run:

npm list | find <package name>

Dalam menjalankan PowerShell:

npm list | sls <package name>
Chrissavage
sumber
3
findversi tidak bekerja untuk saya - bahkan dengan string yang dikutip, tetapi PowerShell berfungsi dengan baik
fiat
4
Untuk pengguna Windows: npm list -g --depth=0 |find "<package name>" Perhatikan tanda kutip ganda
robe007
56

Dari akar paket lakukan:

node -p "require('./package.json').version"

EDIT : (jadi Anda harus cdmasuk ke direktori home modul jika Anda belum ada di sana. Jika Anda telah menginstal modul dengan npm install, maka itu akan berada di bawah node_modules/<module_name>)

EDIT 2 : diperbarui sesuai jawaban dari @ jeff-dickey

Fergie
sumber
Bagus! Cukup sedikit lebih cepat daripada menjalankan "daftar npm" seperti jawaban lain menyarankan (~ 1 bukannya ~ 20) - setidaknya ketika Anda memiliki cuplikan kode ini siap! (benar-benar harus ada plugin npm untuk melakukan ini ...)
Venryx
1
ataunode -p "require('./package.json').version"
Jeff Dickey
2
Ini tidak akan menginstal versi aktual jika ada pembatas rentang seperti ^ ~
geedew
21

Untuk paket lokal

npm list --depth=0

Untuk paket Global

npm list  -g --depth=0
Farhan Yaseen
sumber
21

Menggabungkan beberapa jawaban di atas dan menghasilkan pencarian super sederhana dan super cepat.
Jalankan dari root proyek. Tidak perlu cdmasuk ke folder apa pun, cukup 1 baris:

node -p "require('SOMEPACKAGE/package.json').version"

JoshuaDavid
sumber
21

Anda juga dapat memeriksa versi dengan perintah ini:

npm info <package name> version

Sobin Sunny
sumber
29
Sekali lagi, ini menunjukkan versi terbaru yang tersedia dalam paket registri bukan versi paket yang saat ini diinstal.
David Ferenczy Rogožan
@DawidFerenczy Setuju dengan pertunjukannya hanya versi terbaru seperti info npm httpaction
Nitin.
16

Jika Anda setuju untuk menginstal jq , Anda dapat menggunakan output JSON dari npm list.

npm -j ls <package-name> | jq -r .version

atau, jika Anda ingin menjadi verbose

npm --json list <package-name> | jq --raw-output '.version'

Contohnya:

$ npm -j ls ghost | jq -r .version
0.4.2

Juga, format JSON sedikit berbeda untuk paket global, jadi Anda harus mengubah kueri.

Contohnya:

$ npm -j -g ls | jq -r .dependencies.ghost.version
0.4.2
Benoit Blanchon
sumber
14

Jika Anda cukup berani (dan telah nodemenginstal), Anda selalu dapat melakukan sesuatu seperti:

echo "console.log(require('./package.json').version);" | node

Ini akan mencetak versi paket saat ini. Anda juga dapat memodifikasinya menjadi gila, seperti ini:

echo "eval('var result='+require('child_process').execSync('npm version',{encoding:'utf8'})); console.log(result.WHATEVER_PACKAGE_NAME);" | node

Itu akan mencetak versi WHATEVER_PACKAGE_NAMEpaket, yang dilihat oleh npm version.

KundraLaci
sumber
node -e "console.log(require('./package.json').version);"
papiro
12

Untuk melihat semua paket yang diinstal secara lokal atau global, gunakan perintah ini:

  1. npm listuntuk paket lokal atau npm list -guntuk paket yang diinstal secara global.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v
Shekhar Tyagi
sumber
10

Coba dengan:

npm list --depth 1 --global packagename
Eduardo Cuomo
sumber
10

Saya telah membangun alat yang melakukan hal itu - qnm

qnm - Utilitas CLI sederhana untuk menanyakan node_modulesdirektori.

Instal menggunakan:

npm i --global qnm

dan lari:

qnm [module]

sebagai contoh:

> qnm lodash

lodash
├── 4.17.5
├─┬ cli-table2
 └── 3.10.1
└─┬ karma
  └── 3.10.1

Yang berarti kami telah lodashmenginstal di root dari node_modulesdan dua salinan lainnya di node_modulesdari cli-table2dan karma.

Ini sangat cepat, dan memiliki beberapa fitur bagus seperti penyelesaian tab dan pencarian yang cocok.

Ran Yitzhaki
sumber
9

Untuk mendaftar paket lokal dengan menggunakan nomor versi:

npm ls --depth=0

Untuk mendaftar paket global dengan penggunaan nomor versi:

npm ls -g --depth=0

kavigun
sumber
8

Anda dapat menggunakan versi npm view [module] , npm info [module] versi , npm show versi [module] atau versi npm v [module] untuk memeriksa versi pada modul npm yang diinstal.

Misalkan versi grunt module saya adalah 0.4.5:

npm view grunt version => 0.4.5
npm info grunt version => 0.4.5
npm show grunt version => 0.4.5
npm v grunt version    => 0.4.5
Sérgio
sumber
15
Semua itu menunjukkan versi terbaru yang tersedia, bukan versi yang saat ini diinstal
sth
8

npm list --depth 0 adalah perintah yang menunjukkan semua pustaka dengan versi tetapi Anda dapat menggunakannya npm-check

npm-check adalah pustaka yang baik untuk mengelola semua hal berkenaan dengan peristiwa sistem versi, ia akan menampilkan versi pustaka, pembaruan versi baru, dan versi yang tidak digunakan dan banyak lagi.

untuk menginstalnya jalankan saja

npm install -g npm-check

dan jalankan saja

npm-check

periksa tangkapan layar itu menunjukkan segala sesuatu tentang versi paket, pembaruan versi baru, dan versi yang tidak digunakan.

masukkan deskripsi gambar di sini

Ini bekerja secara global juga. Cobalah. Semoga ini bisa membantu seseorang.

Mahendra Pratap
sumber
7

Berikut ini adalah Unix portabel (menggunakan grepdan sed) satu-liner yang mengembalikan string versi dari paket npm yang diinstal secara global (sebagai gantinya hapus gdari -pgto query paket lokal):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • yang npm lloutput string parseable diformat seperti:/usr/lib/node_modules/npm:[email protected]: ;
  • yang grepperintah ekstrak nilai antara @dan :, inklusif;
  • yang sedperintah menghapus karakter sekitarnya.
wjordan
sumber
6

Saya menambahkan ini ke .bashrc saya

function npmv {
    case $# in # number of arguments passed
    0) v="$(npm -v)" ; #store output from npm -v in variable
        echo "NPM version is: $v"; #can't use single quotes 
                                   #${v} would also work
    ;;   
    1) s="$(npm list --depth=0 $1 | grep $1 | cut -d @ -f 2)";
       echo "$s";
    ;;
    2) case "$2" in # second argument
        g) #global|#Syntax to compare bash string to literal
             s="$(npm list --depth=0 -g $1 | grep $1 | cut -d @ -f 2)";
        echo "$s";
        ;;
        l) #latest
             npm view $1 version; #npm info $1 version does same thing
       ;;
       *) echo 'Invalid arguments';
       ;;
       esac;
    ;;
    *) echo 'Invalid arguments';
    ;;
    esac;
}
export -f npmv

Sekarang yang harus saya lakukan adalah mengetik:

  • npmv untuk versi npm misalnya:NPM version is: 4.2.0
  • npmv <package-name> untuk versi lokal misalnya:0.8.08
  • npmv <package-name> g untuk versi global mis:0.8.09
  • npmv <package-name> l untuk versi terbaru mis .:0.8.10

Catatan -d pada perintah cut berarti pembatas dengan, diikuti oleh @, kemudian f berarti bidang 2 berarti bidang kedua karena akan ada satu sisi simbol @.

JGFMK
sumber
5

Anda dapat mencoba ini: npm show {package} versionmenunjukkan versi paket terbaru. Dan jika paket Anda sudah usang, npm outdatedakan menampilkannya dengan info versi.

Aliaksei
sumber
2
OP bertanya tentang versi paket yang saat ini diinstal , bukan versi terbaru yang tersedia dalam registri paket.
David Ferenczy Rogožan
5

Ini adalah pertanyaan sederhana, dan harus memiliki jawaban yang lebih sederhana daripada yang saya lihat di atas.

Untuk melihat paket npm yang terinstal dengan versinya, perintahnya adalah npm ls --depth=0, yang, secara default, menampilkan apa yang diinstal secara lokal. Untuk melihat paket diinstal secara global, tambahkan -globalargumen: npm ls --depth=0 -global.

--depth=0 mengembalikan daftar paket yang terinstal tanpa dependensi mereka, yang sebagian besar ingin Anda lakukan.

lsadalah nama perintah, dan list merupakan alias untuk ls.

zumafra
sumber
3

Akses package.json

Anda dapat mengakses package.jsonatau bower.jsondari paket dengan:

notepad ./node_modules/:packageName/package.json

Ini akan membuka package.jsondi notepadyang memiliki version numberdari :packageNameAnda termasuk dalam command.

Sebagai contoh :

notepad ./node_modules/vue-template-compiler/package.json

Semoga berhasil.

Akash
sumber
6
Tidak hanya ada banyak cara lebih mudah untuk melakukan ini, versi yang telah Anda tentukan dalam paket Anda. Json mungkin bukan versi yang diinstal karena notasi rentang semver. Artinya, dependensi dapat ditentukan sebagai versi ^ 1.3.0, tetapi itu bisa berarti apa saja dari versi 1.3.0 hingga 1.99.99
Isochronous
3

Kita dapat menggunakan npm view any-berjanji (nama modul Anda) -v

Nitin.
sumber
1
Ini menunjukkan versi terbaru yang tersedia, bukan versi di direktori lokal.
christianbundy
@christianbundy Anda dapat menggunakan daftar npm --depth = 0 | grep uuid
Nitin.
Saya harus menggunakan npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, tapi ya, ini berfungsi selama itu adalah ketergantungan tingkat atas. Saya tidak berpikir itu selalu terjadi, berdasarkan pertanyaan awal.
christianbundy
2

daftar npm nama-paket memberikan versi yang diinstal saat ini

Nandhiny Durai
sumber
0

Sangat sederhana..Jenis di bawah ini

npm view < package-name > version

** Contoh **

npm view redux version

Saya memiliki versi 7.2.0 redux

Daksh Patel
sumber