Tìm phiên bản của gói npm đã cài đặt


2199

Làm cách nào để tìm phiên bản của gói node.js / npm đã cài đặt ?

Điều này in phiên bản của chính npm:

npm -v <package-name>

Điều này in một lỗi khó hiểu:

npm version <package-name>

Điều này in phiên bản gói trên sổ đăng ký (tức là phiên bản mới nhất có sẵn):

npm view <package-name> version

Làm thế nào để tôi có được phiên bản cài đặt ?


5
Trong cài đặt của tôi, "npm -v <tên gói>" tự báo cáo phiên bản của npm. Để liệt kê phiên bản mới nhất của gói trong sổ đăng ký, tôi đã thấy rằng "npm view <tên gói> phiên bản" hoàn thành công việc.
David A. Gray

15
npm showhiển thị mới nhất trong npm, chưa được cài đặt
Tsagana Nokhaeva

Câu trả lời:


2577

npm listcho các gói địa phương hoặc npm list -gcho các gói được cài đặt trên toàn cầu.

Bạn có thể tìm thấy phiên bản của một gói cụ thể bằng cách chuyển tên của nó làm đối số. Ví dụ: npm list gruntsẽ dẫn đến:

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

Ngoài ra, bạn chỉ có thể chạy npm listmà không chuyển tên gói làm đối số để xem phiên bản của tất cả các gói của mình:

├─┬ 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 

Bạn cũng có thể thêm --depth=0đối số vào danh sách các gói đã cài đặt mà không phụ thuộc vào chúng.


126
Trên mac và linux, thật tuyệt khi thêm "| grep module_name", để lọc phiên bản mô-đun mong muốn. Đặc biệt là khi chạy toàn cầu với -g. Ví dụ: "npm list -g | grep express" để có phiên bản express được cài đặt.
Guya

103
Nếu bạn muốn một mô-đun cụ thể, bạn có thể chạy nó như npm list less-middlewaremột ví dụ.
juanpaco

13
Mẹo của Per @ guys cho các hệ thống dựa trên * nix, trên Windows, bạn có thể sử dụng PowerShell để có kết quả tương tự: | select-string module_nameđể lọc mô-đun. Hoặc, nếu bạn đang sử dụng Git Bash (hoặc chỉ Bash, cho vấn đề đó), bạn có thể sử dụng grep.
Noel

15
Nếu bạn không thể nhớ list, npm lscũng hoạt động. Trong thực tế, nhiều lệnh npm có bí danh, và hơn nữa, nếu bạn nhập một chuỗi con của một lệnh, nếu chuỗi con này không rõ ràng, nó cũng sẽ hoạt động; ví dụ npm ls, npm list, npm lisđều như nhau. Nếu bạn muốn đầu ra dài dòng hơn, hãy thử npm ll(nhưng có lẽ bạn muốn --depth=0thêm vào nó).
jakub.g

4
Đầu ra không phải là tốt nhất để phân tích cú pháp với một tập lệnh. Có thực sự không có cách nào để có được một đầu ra mà chỉ là phiên bản gói mà không phải làm gì đó nhưnpm list -g | awk -F@ '/<package>/ { print $2}'
Thayne

868

Một cách nhanh chóng khác để tìm ra các gói được cài đặt cục bộkhông có phụ thuộc của chúng là sử dụng:

npm list --depth=0

Cung cấp cho bạn một cái gì đó như

├── 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

Rõ ràng, điều tương tự có thể được thực hiện trên toàn cầu với npm list -g --depth=0.

Phương pháp này rõ ràng hơn trong trường hợp bạn đã cài đặt rất nhiều gói.

Để tìm ra những gói cần được cập nhật, bạn có thể sử dụng npm outdated -g --depth=0.


14
nó cho tôi giống như không có
--depth

7
có vẻ như họ đã sửa nó trong npm 1.4.6. Xem github.com/npm/npm/issues/4733
Howie

7
Hoạt động tuyệt vời với| grep <package_name>
Marco Prins

4
@ygaradon Đúng, nhưng --depth=0làm cho nó nhanh hơn, bởi vì nó không phải tải phụ thuộc đệ quy
Marco Prins

npm list -g --depth=0cho các mô-đun danh sách được cài đặt trên toàn cầu
EdgeDev

220

npm view <package> version - trả về phiên bản mới nhất có sẵn trên gói.

npm list --depth=0 - trả về các phiên bản của tất cả các mô-đun được cài đặt mà không phụ thuộc.

npm list - trả về các phiên bản của tất cả các mô-đun và phụ thuộc.

Và cuối cùng để có được phiên bản nút: node -v


16
Phiên bản npm xem <gói>, đi đến sổ đăng ký từ xa npm, không phải hệ thống tệp cục bộ ...
Alexander Mills

@AlexanderMills Đúng, nhưng có nó ở đây sẽ tránh một tìm kiếm khác cho điều đó. Btw, npm v, npm infonpm showđều là bí danh của npm view.
CPHPython

85
npm info YOUR_PACKAGE version

ví dụ

npm info grunt version
0.4.5

105
Điều này không hiển thị phiên bản gói đã cài đặt, nó chỉ hiển thị phiên bản mới nhất có sẵn.
Tanner Semerad

Đồng ý với @ tanner-semerad. Tôi đã kiểm tra vào Docs of npm để làm rõ nó. npm infolà bí danh cho npm viewvà trong Docs of npm, bạn sẽ thấy trạng thái đứng đó: Lệnh này hiển thị dữ liệu về một gói và in nó ra luồng được tham chiếu bởi cấu hình outfd, mặc định là stdout. [...] Phiên bản mặc định là "mới nhất" nếu không được chỉ định. Đó là cách tôi bỏ phiếu.
dannydedog

Hiển thị phiên bản mới nhất có sẵn, không được cài đặt mới nhất. Bị hạ bệ.
lofihelsinki

2
npm info YOUR_PACKAGE versionNgười duy nhất đã làm việc :)
GOXR3PLUS

tương tự, 'npm thông tin phiên bản YOU_PACKAGE' Người duy nhất đã làm việc
Jonas

63

Tôi vừa mới sử dụng

npm list | grep <package name>

và nó đã làm việc rất tốt

Trên cửa sổ chạy:

npm list | find <package name>

Trong PowerShell chạy:

npm list | sls <package name>

3
findphiên bản không hoạt động với tôi - ngay cả với chuỗi trích dẫn, nhưng powershell hoạt động tốt
fiat

4
Đối với người dùng Windows: npm list -g --depth=0 |find "<package name>" Lưu ý dấu ngoặc kép
robe007

56

Từ gốc của gói làm:

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

EDIT : (vì vậy bạn cần cdvào thư mục chính của mô-đun nếu bạn chưa ở đó. Nếu bạn đã cài đặt mô-đun với npm install, thì nó sẽ ở dưới node_modules/<module_name>)

EDIT 2 : được cập nhật theo câu trả lời từ @ jeff-dickey


Đẹp! Khá nhanh hơn một chút so với việc chạy "danh sách npm" như các câu trả lời khác gợi ý (~ 1s thay vì ~ 20s) - ít nhất là khi bạn đã sẵn sàng đoạn mã này! (thực sự cần có một plugin npm để làm điều này ...)
Venryx

1
hoặcnode -p "require('./package.json').version"
Jeff Dickey

2
Điều này sẽ không được cài đặt phiên bản thực tế nếu có một dấu phân cách như ^ ~
geedew 22/03/19

21

Đối với các gói địa phương

npm list --depth=0

Đối với gói Toàn cầu

npm list  -g --depth=0

21

Kết hợp một số câu trả lời ở trên và tạo ra một tra cứu siêu đơn giản và siêu nhanh.
Chạy từ gốc dự án. Không cần cdvào bất kỳ thư mục nào, chỉ cần 1 dòng:

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


21

Bạn cũng có thể kiểm tra phiên bản bằng lệnh này:

npm info <package name> version


29
Một lần nữa, nó hiển thị phiên bản mới nhất có sẵn trong sổ đăng ký gói chứ không phải phiên bản của gói hiện được cài đặt.
David Ferenczy Rogožan

@DawidFerenczy Đồng ý với phiên bản mới nhất chỉ hiển thị như npm thông tin npm
Nitin.

16

Nếu bạn đồng ý cài đặt jq , bạn có thể sử dụng đầu ra JSON của npm list.

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

hoặc, nếu bạn muốn dài dòng

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

Ví dụ:

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

Ngoài ra, định dạng JSON hơi khác nhau đối với các gói toàn cầu, vì vậy bạn sẽ cần thay đổi truy vấn.

Ví dụ:

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

14

Nếu bạn đủ can đảm (và đã nodecài đặt), bạn luôn có thể làm một cái gì đó như:

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

Điều này sẽ in phiên bản của gói hiện tại. Bạn cũng có thể sửa đổi nó để phát điên, như thế này:

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

Điều đó sẽ in phiên bản của WHATEVER_PACKAGE_NAMEgói, được nhìn thấy bởi npm version.


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

12

Để xem tất cả các gói được cài đặt cục bộ hoặc toàn cầu, hãy sử dụng các lệnh sau:

  1. npm listcho các gói địa phương hoặc npm list -gcho các gói được cài đặt trên toàn cầu.
  2. npm list --depth=0
  3. npm list | sls <package name>
  4. node -v


10

Tôi đã xây dựng một công cụ thực hiện chính xác điều đó - qnm

qnm - Một tiện ích CLI đơn giản để truy vấn node_modulesthư mục.

Cài đặt nó bằng cách sử dụng:

npm i --global qnm

và chạy:

qnm [module]

ví dụ:

> qnm lodash

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

Những phương tiện chúng tôi đã lodashđược cài đặt trong thư mục gốc của node_modulesvà hai bản sao khác trong node_modulescủa cli-table2karma.

Nó thực sự nhanh và có một số tính năng hay như hoàn thành tab và tìm kiếm khớp.


9

Để liệt kê các gói cục bộ với số phiên bản, hãy sử dụng:

npm ls --depth=0

Để liệt kê các gói toàn cầu với số phiên bản, hãy sử dụng:

npm ls -g --depth=0


8

Bạn có thể sử dụng phiên bản npm view [mô-đun] , phiên bản npm thông tin [mô-đun] , phiên bản npm hiển thị [mô-đun] hoặc phiên bản npm v [mô-đun] để kiểm tra phiên bản trên mô-đun npm đã cài đặt.

Giả sử phiên bản mô-đun lẩm bẩm của tôi là 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

15
Tất cả những phiên bản hiển thị phiên bản mới nhất hiện có, không phải phiên bản hiện được cài đặt
sth

8

npm list --depth 0 là lệnh hiển thị tất cả các thư viện có phiên bản nhưng bạn có thể sử dụng npm-check

npm-check là một thư viện tốt để quản lý tất cả những thứ liên quan đến sự kiện hệ thống phiên bản, nó sẽ hiển thị các phiên bản thư viện, cập nhật phiên bản mới và phiên bản không sử dụng và nhiều phiên bản khác.

để cài đặt nó chỉ cần chạy

npm install -g npm-check

và chỉ cần chạy

npm-check

kiểm tra ảnh chụp màn hình nó đang hiển thị mọi thứ về phiên bản gói, cập nhật phiên bản mới và phiên bản không sử dụng.

nhập mô tả hình ảnh ở đây

Nó hoạt động trên toàn cầu quá. hãy thử một lần. Hy vọng điều này sẽ giúp ai đó.


7

Đây là một Unix di động (sử dụng grepsed) một lớp lót trả về chuỗi phiên bản của gói npm được cài đặt toàn cầu ( thay vào đó loại bỏ gtừ -pgđể truy vấn các gói cục bộ):

$ npm ll -pg --depth=0 grunt | grep -o "@.*:" | sed 's/.$//; s/^.//'
0.4.5
  • các npm llđầu ra một chuỗi có thể phân tích được định dạng như : /usr/lib/node_modules/npm:npm@2.14.8:;
  • các greplệnh trích xuất các giá trị giữa @:, toàn diện;
  • các sedlệnh loại bỏ các nhân vật xung quanh.

6

Tôi đã thêm nó vào .bashrc của tôi

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

Bây giờ tất cả những gì tôi phải làm là gõ:

  • npmv cho phiên bản npm, vd:NPM version is: 4.2.0
  • npmv <tên gói> cho phiên bản cục bộ, vd:0.8.08
  • npmv <tên gói> g cho phiên bản toàn cầu, vd:0.8.09
  • npmv <tên gói> l cho phiên bản mới nhất, vd:0.8.10

Lưu ý -d trên lệnh cắt có nghĩa là phân định bởi, theo sau là @, sau đó f có nghĩa là trường 2 có nghĩa là trường thứ hai vì sẽ có một trong hai phía của biểu tượng @.


5

Bạn có thể thử điều này: npm show {package} versionhiển thị phiên bản gói mới nhất. Và nếu gói của bạn đã lỗi thời, npm outdatedsẽ hiển thị nó với thông tin phiên bản.


2
OP đã hỏi về phiên bản của gói hiện được cài đặt , không phải là phiên bản mới nhất có sẵn trong sổ đăng ký gói.
David Ferenczy Rogožan

5

Đây là câu hỏi đơn giản và nên có câu trả lời đơn giản hơn những gì tôi thấy ở trên.

Để xem các gói npm được cài đặt với phiên bản của chúng, lệnh npm ls --depth=0, theo mặc định, sẽ hiển thị những gì được cài đặt cục bộ. Để xem các gói được cài đặt trên toàn cầu, hãy thêm -globalđối số : npm ls --depth=0 -global.

--depth=0 trả về một danh sách các gói đã cài đặt mà không phụ thuộc vào chúng, đó là điều bạn muốn làm hầu hết thời gian.

lslà tên của lệnh và list là bí danh cho ls.


3

Truy cập package.json

Bạn có thể truy cập package.jsonhoặc bower.jsoncủa gói với:

notepad ./node_modules/:packageName/package.json

Điều này sẽ mở package.jsontrong notepadđó có version numbercác :packageNamebạn bao gồm trong command.

Ví dụ :

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

Chúc may mắn.


6
Không chỉ có nhiều cách dễ dàng hơn để làm điều này, phiên bản bạn đã chỉ định trong gói.json của bạn thực sự có thể không phải là phiên bản được cài đặt do các ký hiệu phạm vi. Nghĩa là, một phụ thuộc có thể được chỉ định là phiên bản ^ 1.3.0, nhưng điều đó có thể có nghĩa là bất cứ điều gì từ phiên bản 1.3.0 đến 1.99.99
đồng bộ

3

Chúng tôi có thể sử dụng npm view any-hứa (tên mô-đun của bạn) -v


1
Điều này cho thấy phiên bản mới nhất có sẵn, không phải phiên bản trong thư mục địa phương.
christianbundy

@christianbundy bạn có thể sử dụng danh sách npm --depth = 0 | grep uuid
Nitin.

Tôi đã phải sử dụng npm list --depth=0 | grep uuid | awk '{ print $2; }' | cut -d '@' -f 2, nhưng vâng, điều này hoạt động miễn là nó phụ thuộc cấp cao nhất. Tôi không nghĩ rằng đó luôn là trường hợp, dựa trên câu hỏi ban đầu.
christianbundy


0

Nó rất đơn giản..Chỉ cần loại dưới dòng

npm view < package-name > version

** Thí dụ **

npm view redux version

Tôi có phiên bản 7.2.0 của redux

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.