2013-11-20 19 views
16

Tôi có một package.json với tất cả devDependencies của mình.Tại sao không `npm prune` xóa thư mục khỏi node_modules?

Hiểu biết của tôi là nếu tôi xóa phụ thuộc và chạy npm prune, nút sẽ xóa thư mục mô-đun khỏi node_modules. Đây có vẻ là cách dễ nhất để duy trì thư mục node_modules của tôi.

Từ docs:

NPM mận

Hủy bỏ gói không liên quan

lệnh này loại bỏ gói "không liên quan".

Các gói không liên quan là các gói không được liệt kê trong danh sách phụ thuộc của gói phụ huynh .

Tuy nhiên, đôi khi ngay cả sau khi chạy npm prune Tôi vẫn có thư mục mô-đun trong số node_modules.

Tại sao điều này xảy ra và cách chính xác để xóa các mô-đun không được sử dụng là gì?

+1

Thực hiện danh sách 'npm'. Là thư mục trong câu hỏi một phụ thuộc transitive (phụ thuộc của một phụ thuộc)? –

Trả lời

9

Theo documentation

Nếu cờ --production được chỉ định, lệnh này sẽ loại bỏ các gói theo quy định tại devDependencies của bạn.

Vì vậy, nếu bạn muốn thoát khỏi thư mục module trong node_modules được quy định tại devDependencies, bạn sẽ thực hiện

npm prune --production

+1

Tôi muốn xóa các thư mục KHÔNG được chỉ định trong devDependencies của tôi. Điều này khác với những gì bạn đang đề xuất. Tôi muốn thư mục node_modules của tôi chỉ bao gồm những gì được viết trong các phụ thuộc của tôi, không phải các mô đun bổ sung đã được sử dụng trước đó. – elanh

+0

bằng cách nói "KHÔNG được chỉ định trong devDependencies của tôi" bạn có nghĩa là chúng được quy định trong phụ thuộc thường xuyên hoặc họ không có mặt trong package.json ở tất cả? –

+2

Tôi có nghĩa là họ không có trong package.json cả. – elanh

5

Sau khi chạy:

npm ls 

Tôi thấy:

npm ERR! extraneous: [email protected] /path/to/package 

Sau đó, khi tôi đã làm:

npm prune 

Các gói phần mềm đã được gỡ bỏ.

Các vấn đề liên quan