Làm thế nào để biết gói npm đã được cài đặt trên toàn cầu hay cục bộ


153

Tôi đang cài đặt grunt, nút, npm, bower và grunt-cli trên windows7.

Các hướng dẫn nói rằng tôi nên chạy các lệnh cài đặt với cờ -g cho toàn cầu.

Làm cách nào để kiểm tra xem tôi đã sử dụng cờ -g khi cài đặt chưa. Sẽ mất rất nhiều thời gian để gỡ cài đặt chúng và cài đặt lại.

Câu trả lời:


219

Sử dụng listlệnh với -gcờ để xem tất cả các gói được cài đặt trên toàn cầu:

npm list -g

Để kiểm tra xem một gói cụ thể có được cài đặt trên toàn cầu hay không, bạn có thể cung cấp tên của gói ( grunttrong trường hợp này) như được thấy dưới đây:

npm list -g grunt

Hoặc bạn có thể sử dụng grepđể lọc tên gói:

npm list -g | grep grunt

Nguồn: https://docs.npmjs.com/cli/ls


4
Đối với một boolean "cài đặt hay không?" kiểm tra, thử sử dụng --depth. Ví dụ : npm list --depth 1 --global csats-mturk > /dev/null 2>&1. Đây là một ví dụ chi tiết hơn .
Adam Monsen

2
@AdamMonsen, tôi đang tìm kiếm cài đặt cấp cao nhất của chim nhạn. Tôi đã từng npm list --depth 0 --global ternkiểm tra xem chim nhạn có được cài đặt trên toàn cầu như thể khôngnpm install -g tern
Sudhi

grepcó vẻ như là một giải pháp khá đáng tin cậy khi đưa ra các nhận xét về việc thoát khỏi
npm

31
npm list --depth 1 --global packagename > /dev/null 2>&1

Sau đó, bạn có thể kiểm tra trạng thái thoát để xem nó đã được cài đặt hay chưa. Cảm ơn Adam Monsen .


3
cảm ơn --depth 1! đó là những gì tôi đang tìm kiếm. Thực tế tôi đang sử dụng ngay bây giờnpm list --depth 0 -g
tiết lộ

Vì một số lý do $?luôn trả về 1cho tôi, ngay cả khi gói IS được cài đặt hoặc KHÔNG được cài đặt.
Katie

4
CẢNH BÁO: npm sẽ luôn thoát với lỗi nếu bất kỳ gói nào của bạn có phụ thuộc không được đáp ứng, ngay cả khi gói được cài đặt . @Kayvar đây là lý do tại sao npm trả lại 1 cho bạn.
Codebling

17

Để kiểm tra xem một gói cụ thể có được cài đặt trên toàn cầu không:

npm list -g [package-name]

Hãy lấy "tiếng càu nhàu" làm ví dụ. Nếu nó được cài đặt trên toàn cầu, bạn sẽ thấy một cái gì đó như thế này

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── grunt@0.4.5

Nếu nó không được cài đặt trên toàn cầu, bạn sẽ thấy một cái gì đó như thế này

C:\data\tryout\test1>npm list -g grunt
C:\Users\xxxxxxx\AppData\Roaming\npm
└── (empty)

Để kiểm tra xem một gói cụ thể có được cài đặt cục bộ hay không, bạn có thể thực hiện các lệnh tương tự như trên nhưng không có tham số -g.

nguồn: Cách kiểm tra xem gói npm đã được cài đặt trên toàn cầu hay cục bộ .


6

Bạn có thể liệt kê tất cả các gói toàn cầu bằng lệnh:

npm ls -g

Hoặc kiểm tra một gói cụ thể với:

npm ls -g [package-name] 

Ví dụ: npm ls -g @angular/cli


1

Trong Windows, chúng tôi sử dụng lệnh sau để tìm hiểu xem gói đã được cài đặt hay chưa. Vui lòng tham khảo hình ảnh để biết chi tiết.

npm list -g | find "create"

kết quả mẫu


0

Từ gói của bạn với sindresorhus/is-installed-globally

https://github.com/sindresorhus/is-installed-globally

Sử dụng:

const isInstalledGlobally = require('is-installed-globally');

// With `npm install your-package`
console.log(isInstalledGlobally);
//=> false

// With `npm install --global your-package`
console.log(isInstalledGlobally);
//=> true

Tôi thấy điều này hữu ích khi tôi phải phân phối các tệp dựng sẵn với gói của mình: Làm cách nào để xuất bản gói npm với các tệp phân phối? Với gói này, tôi có thể kiểm tra xem cài đặt là cục bộ hay toàn cầu, sau đó sử dụng các đường dẫn tương đối cho các cài đặt cục bộ, như được hiển thị ở đây .

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.