Tự động xóa các phần phụ thuộc khỏi package.json khi sử dụng gỡ cài đặt npm


84

Sau khi npm inittôi có thể thêm các phụ thuộc vào package.json của mình bằng cách sử dụng:

npm install package --save

Và nói rằng, tôi muốn uninstallđóng gói và tôi làm như vậy bằng cách:

npm uninstall package

nhưng tôi cũng muốn package.json của mình cũng được cập nhật tương ứng mà không phải truy cập tệp theo cách thủ công và xóa dòng đó.

Từ tài liệu npm nó cho biết:

Nó hoàn toàn là phụ gia, vì vậy nó không xóa các tùy chọn khỏi package.json của bạn mà không có lý do thực sự chính đáng để làm như vậy.

Vì vậy, tôi chỉ muốn biết liệu điều này có khả thi hay không.


Vì các phần phụ thuộc của tôi được tự động thêm vào package.json bất cứ khi nào tôi cài đặt với cờ (--save), tôi đã tự hỏi liệu có cách nào để xóa các phần phụ thuộc khỏi package.json bất cứ khi nào tôi gỡ cài đặt gói đó hay không.
shrek

Câu trả lời:


150

Sử dụng cùng một --savelá cờ. Nếu bạn đã cài đặt phụ thuộc với:

$> npm install grunt-cli --save

bạn có thể gỡ cài đặt nó, với package.json được cập nhật, bằng cách sử dụng:

$> npm uninstall grunt-cli --save

Cờ 'lưu' cho npm cập nhật package.json dựa trên thao tác bạn vừa thực hiện.


3
Tôi đang sử dụng npm với ember-cli và tôi phải sử dụng --save-devthay thế --save.
gerry3

4
nếu bạn đã cài đặt nó bằng --save-dev, thì việc gỡ cài đặt cũng là --save-dev, vì --save lưu vào dependenciesphần của tệp package.json, trong khi --save-dev sẽ lưu vào devDependenciesphần
Mike ' Pomax 'Kamermans

7
Tôi đã đi xa kể từ khi đăng câu hỏi này và đây là một mẹo nhỏ. Bạn có thể sử dụng npm i <package_name> -Sđể thêm vào dependenciesdanh sách của mình hoặc npm i <package_name> -Dthêm vào của bạn dev-dependencies. Cùng một lá cờ áp dụng cho việc xóa bằng npm rm <package_name> -Shoặcnpm rm <package_name> -D
hét lên

1
nhưng lưu ý rằng đây chỉ là những tương đương cờ tốc ký cho --save và --save-dev. Xem npm helptất cả các cờ và tương đương tốc ký của chúng. (bất cứ điều gì được cài đặt với -S hoặc --save và được gỡ bỏ bằng cách sử dụng cũng vậy, NPM không nhìn thấy chúng như nhau Chỉ cần "ít gõ" cho -S.)
Mike 'Pomax' Kamermans

1
Bạn là một vị thánh trong số những người đàn ông.
John Von Neumann

0

Trong trường hợp của tôi --save đã không xóa mục nhập khỏi package.json, lệnh như được đề xuất bởi ionic-check, tôi nghĩ nếu quá trình gỡ cài đặt xảy ra thoát với bất kỳ lỗi nào thì package.json sẽ không được cập nhật trong trường hợp đó bạn chỉ có một tùy chọn để thay đổi thủ công package.json, điều này thật tẻ nhạt nhưng là cách duy nhất tôi đoán

CẬP NHẬT

Khi bạn gỡ cài đặt một gói có sự phụ thuộc vào gói khác đang hoạt động thì việc gỡ cài đặt trong trường hợp nào có thể không thành công với các lỗi / cảnh báo, phương pháp an toàn là thông qua biểu đồ phụ thuộc sau, không chắc chắn nếu có bất kỳ công cụ nào, một công cụ hữu ích trong các hoạt động đó, cảnh báo thông báo khá gây hiểu lầm mặc dù "bạn phải cài đặt các phụ thuộc ngang hàng .." không có ý nghĩa gì khi chúng tôi gỡ cài đặt một gói


1
Điều này không cần thiết: nếu nó nằm trong dependenciesdanh sách uninstall --save thì nên loại bỏ nó, bất kể thứ gì khác phụ thuộc vào nó hay không. NPM sử dụng tính năng làm phẳng phụ thuộc khá thông minh, vì vậy nếu bạn có X trong danh sách phụ thuộc của mình (rõ ràng) và bạn gỡ cài đặt X --save, nó sẽ bị xóa. Tuy nhiên, hãy nhớ rằng có rất nhiều danh sách phụ thuộc, và --savekhông giống như --save-dev, --save-prodhoặc --save-optional. Cũng có: nếu bạn uninstalldẫn đến lỗi, NPM dừng lại ở lỗi đó. Nó không cố gắng tiếp tục vì nó không thể đảm bảo tính đúng đắn nữa.
Mike 'Pomax' Kamermans
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.