Làm cách nào để gỡ cài đặt gói được cài đặt bằng liên kết npm?


162

Khi cài đặt gói nút bằng sudo npm linkthư mục của gói, làm cách nào tôi có thể gỡ cài đặt gói sau khi đã hoàn tất?

npm linkcài đặt gói dưới dạng một liên kết tượng trưng trong vị trí gói toàn cầu của hệ thống ('/ usr / local / lib`). Điều này cho phép bạn kiểm tra gói trong khi vẫn phát triển nó, mà không phải cài đặt lại nhiều lần.

Tôi cần chạy lệnh npm nào để xóa liên kết lại?

Câu trả lời:


166

Gói có thể được gỡ cài đặt bằng cách sử dụng cùng lệnh gỡ cài đặt hoặc lệnh rm có thể được sử dụng để xóa các gói đã cài đặt. Điều duy nhất cần ghi nhớ là liên kết cần được gỡ cài đặt trên toàn cầu - --globalcờ cần được cung cấp.

Để gỡ cài đặt foogói được liên kết toàn cầu , có thể sử dụng lệnh sau (sử dụng sudonếu cần, tùy thuộc vào thiết lập và quyền của bạn)

sudo npm rm --global foo

Điều này sẽ gỡ cài đặt gói.

Để kiểm tra xem một gói đã được cài đặt chưa, npm lslệnh có thể được sử dụng:

npm ls --global foo

5
Nếu bạn không chắc chắn tên của gói được liên kết, bạn cũng có thể làm npm ls --global --depth 0để liệt kê tất cả các phụ thuộc cấp cao nhất của mình
schu34

1
Điều này không làm việc cho tôi vì vấn đề cấp phép, ngay cả với sudo. Tôi đã tạo thư mục bị thiếu với một hình nộm package.jsonvới trường nameversion( namephải khớp với tên gói, versioncó thể là bất cứ thứ gì). Trong thư mục đó tôi đã chạy npm link && npm unlinkvà nó hoạt động.
silvenon

npm uninstalltừ thư mục thư viện cục bộ cũng sẽ hoạt động.
dấu gạch chéo ngược

132

bạn có thể sử dụng unlinkđể loại bỏ các liên kết tượng trưng.

Ví dụ:

cd ~/projects/node-redis 
npm link                 
cd ~/projects/node-bloggy
npm link redis             # links to your local redis

Để cài đặt lại từ gói.json của bạn:

npm unlink redis
npm install

https: //www.tachyonstemsheet.com/npm-cheat-sheet/#unlinking-a-npm-package-from-an-application


4
Không unlinkgiống như rmcho npm? Họ chia sẻ cùng một trang người đàn ông (với uninstall).
nwinkler

1
@nwinkler bạn có thể chia sẻ một liên kết?
Blair Anderson

12
Mã nguồn npm sử dụng rm, hủy liên kết, xóa, r và un làm bí danh để gỡ cài đặt: github.com/npm/npm/blob/ Lỗi - xem dòng 66ff.
nwinkler

Liên kết ở dưới cùng của câu trả lời này là chết cho tôi.
Liron Yahdav

Không npm iloại bỏ tất cả các liên kết nào?
Toivo Säwén

19

đau liên kết npm:

-Module tên gulp-task

Tên dự án-x


Bạn muốn liên kết gulp-task :

1: Chuyển đến thư mục gulp-task sau đó thực hiện việc npm linknày sẽ liên kết dự án với các mô-đun toàn cầu của bạn

2: Chuyển đến dự án dự án của bạn -x sau đó npm installđảm bảo xóa thư mục node_modules hiện tại


Bây giờ bạn muốn loại bỏ sự điên rồ này và sử dụng tác vụ gulp thực sự , chúng tôi có hai tùy chọn:

Tùy chọn 1: Hủy liên kết qua npm:

1: Chuyển đến dự án của bạn và làm npm unlink gulp-taskđiều này sẽ loại bỏ mô-đun cài đặt được liên kết

2: Chuyển đến thư mục gulp-task và làm npm unlinkđể xóa symlink. Lưu ý rằng chúng tôi đã không sử dụng tên của mô-đun

3: ăn mừng


Điều gì xảy ra nếu điều này không hoạt động, xác minh bằng cách định vị mô-đun cài đặt toàn cầu của bạn. Tôi là vị trí ls -la /usr/local/lib/node_modules/nếu bạn đang sử dụng nvm, nó sẽ là một đường dẫn khác


Tùy chọn 2: Xóa liên kết tượng trưng như một guru linux bình thường

1: xác định vị trí phụ thuộc toàn cầu của bạn cd /usr/local/lib/node_modules/

2: loại bỏ symlink chỉ đơn giản là sử dụng rmlệnh

rm gulp-task chắc chắn rằng bạn không có /ở cuối

rm gulp-task/ sai rồi

rm gulp-task ✔️


làm một đơn giản npm-unlinkloại bỏ tất cả các gói trong dự án của tôi.
cst1992

2

Nếu bạn đã làm một cái gì đó như vô tình npm linktạo trình tạo webapp sau khi bạn thay đổi nó, bạn có thể sửa nó bằng cách sao chép đúng trình tạo và liên kết .

git clone https://github.com/yeoman/generator-webapp.git;
# for fixing generator-webapp, replace with your required repository
cd generator-webapp;
npm link;

0

"npm install" thay thế tất cả các phụ thuộc trong node_modules của bạn được cài đặt với "npm link" với các phiên bản từ npmjs (được chỉ định trong gói.json của bạn)

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.