Bạn có thể sử dụng npm-prune để loại bỏ các gói không liên quan.
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
Lệnh này loại bỏ các gói "không liên quan". Nếu tên gói được cung cấp, thì chỉ các gói khớp với một trong các tên được cung cấp sẽ bị xóa.
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 cha.
Nếu --production cờ được quy định hoặc NODE_ENV biến môi trường được thiết lập để sản xuất , lệnh này sẽ loại bỏ các gói theo quy định tại bạn devDependencies . Cài đặt - không sản xuất sẽ phủ nhận NODE_ENV đang được đặt thành sản xuất .
Nếu cờ --dry-run được sử dụng thì sẽ không có thay đổi nào thực sự được thực hiện.
Nếu cờ --json được sử dụng thì các thay đổi npm prune đã thực hiện (hoặc sẽ được thực hiện với --dry-run ) được in dưới dạng đối tượng JSON.
Trong hoạt động bình thường với gói Khóa kích hoạt, mô-đun không liên quan được cắt tỉa tự động khi module được cài đặt và bạn sẽ chỉ cần lệnh này với --production cờ.
Nếu bạn đã vô hiệu hóa khóa gói thì các mô-đun bên ngoài sẽ không bị xóa và bạn phải chạy npm prune theo thời gian để loại bỏ chúng.
Sử dụng npm-depupe để giảm trùng lặp
npm dedupe
npm ddp
Tìm kiếm cây gói cục bộ và cố gắng đơn giản hóa cấu trúc tổng thể bằng cách di chuyển các phụ thuộc xa hơn lên cây, nơi chúng có thể được chia sẻ hiệu quả hơn bởi nhiều gói phụ thuộc.
Ví dụ, hãy xem xét biểu đồ phụ thuộc này:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
Trong trường hợp này, npm-depupe sẽ biến cây thành:
a
+-- b
+-- d
`-- c@1.0.10
Do tính chất phân cấp của tra cứu mô-đun của nút, cả b và d đều sẽ nhận được sự phụ thuộc của chúng được đáp ứng bởi gói c ở cấp gốc của cây.
Thuật toán chống trùng lặp đi trên cây, di chuyển từng phụ thuộc càng xa trong cây càng tốt, ngay cả khi không tìm thấy các bản sao. Điều này sẽ dẫn đến cả một cây phẳng và trùng lặp.
node_modules
khi chúng bị xóa khỏi tương ứngpackage.json
?