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


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

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

npm -v <package-name>

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

npm version <package-name>

Thao tác này sẽ 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?


1577
2018-06-10 20:36


gốc


sử dụng lệnh => npm --version để lấy phiên bản được cài đặt của npm. - LogicalDesk
Thử npm show <package> version - r00t hkr
Trong quá trình cài đặt của tôi, "npm -v <package-name>" báo cáo phiên bản của npm, chính nó. Để liệt kê phiên bản mới nhất của một gói trong sổ đăng ký, tôi đã thấy rằng "phiên bản npm xem <tên gói>" được thực hiện công việc. - David A. Gray


Các câu trả lời:


npm list cho gói địa phương hoặc npm list -g cho 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ó thành một đối số. Ví dụ, npm list grunt sẽ cho kết quả:

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

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

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

1936
2018-06-11 19:13



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 khi chạy trên toàn cầu với -g. Ví dụ: "npm list -g | grep express" để tải phiên bản express được cài đặt. - guya
Nếu bạn muốn một mô-đun cụ thể, bạn có thể chạy nó như npm list less-middleware làm ví dụ. - juanpaco
Mẹo của mỗi @ guya 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
Nếu bạn không thể nhớ list, npm ls cũng hoạt động. Thực tế, nhiều lệnh npm có các bí danh, và hơn nữa, nếu bạn gõ một chuỗi con của một lệnh, nếu chuỗi con này là không rõ ràng, nó cũng sẽ làm việc; ví dụ npm ls, npm list, npm lis đều giống nhau. Nếu bạn muốn xuất nhiều tiết hơn, hãy thử npm ll (nhưng có lẽ bạn muốn --depth=0 thêm vào nó). - jakub.g
Đầu ra không phải là cách tốt nhất để phân tích cú pháp bằng tập lệnh. Có thực sự không phải là một cách để có được một đầu ra mà chỉ là phiên bản gói mà không cần phải làm một cái gì đó như npm list -g | awk -F@ '/<package>/ { print $2}' - Thayne


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

npm list --depth=0

Nó mang lại 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, cùng 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 gói nào cần được cập nhật, bạn có thể sử dụng npm outdated -g --depth=0.


707
2018-05-23 01:50



nó cho tôi giống như không có - ngày thứ tư - ygaradon
có vẻ như họ đã sửa nó trong npm 1.4.6. Xem github.com/npm/npm/issues/4733 - Howie
Hoạt động tốt với | grep <package_name> - Marco Prins
@ygaradon Đúng, nhưng --depth=0 làm cho nó nhanh hơn, bởi vì nó không phải tải phụ thuộc đệ quy - Marco Prins


npm view <package> version - trả về phiên bản mới nhất hiện có 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ài đặt mà không cần phụ thuộc.

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

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


164
2017-07-01 03:03



npm xem phiên bản <package>, đi tới đăng ký từ xa npm, không phải hệ thống tập tin cục bộ ... - Alexander Mills
@AlexanderMills True, nhưng có nó ở đây tránh tìm kiếm khác cho điều đó. Btw, npm v, npm info và npm show là tất cả bí danh của npm view. - CPHPython


npm info YOUR_PACKAGE version

ví dụ.

npm info grunt version
0.4.5

71
2018-06-24 03:21



Đ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 hiện có. - Tanner Semerad
Đồng ý với @ tanner-semerad. Tôi đã đăng ký Tài liệu của npm để làm rõ nó. npm info là bí danh cho npm view và trong Tài liệu của npm bạn sẽ thấy rằng đứng: Lệnh này cho thấy dữ liệu về một gói và in nó vào 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 xuống. - dannydedog


Tôi vừa mới sử dụng npm list | grep <package name> và nó hoạt động 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>


38
2018-01-27 12:39



find phiên bản không hoạt động cho tôi - ngay cả với chuỗi được trích dẫn, nhưng PowerShell hoạt động tốt - fiat


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

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

CHỈNH SỬA: (vì vậy bạn cần cd và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, sau đó nó sẽ được theo node_modules/<module_name>)

CHỈNH SỬA 2: được cập nhật theo câu trả lời từ @ jeff-dickey


27
2017-09-30 11:57



Tốt đẹp! Khá nhanh hơn một chút so với chạy "danh sách npm" như các câu trả lời khác đề xuất (~ 1s thay vì ~ 20s) - ít nhất là khi bạn có đoạn mã này đã sẵn sàng! (có thực sự là một plugin npm để làm điều này ...) - Venryx
hoặc là node -p "require('./package.json').version" - Jeff Dickey


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

Giả sử phiên bản mô-đun grunt 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

13
2017-11-12 15:53



Tất cả đều 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


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

npm info <package name > version


13
2017-12-16 04:28



Một lần nữa, nó cho thấy phiên bản mới nhất có sẵn trong gói đăng ký không phải là phiên bản của gói hiện đang được cài đặt. - Dawid Ferenczy


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 được tiết

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 đối với các gói toàn cầu, vì vậy bạn cần phải thay đổi truy vấn.

Ví dụ:

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

12
2017-08-13 11:56





Nếu bạn đủ dũng cảm (và có node đã cài đặt), bạn luôn có thể thực hiện một số việc như:

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

Thao tác 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ó để đi đ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_NAME gói, được xem bởi npm version.


12
2017-08-05 14:41