Cách xóa node_modules trên Mac mà không làm mất dự án
Đội ngũ AskClean · Cập nhật 2026-08-05
Bạn có thể xóa node_modules khi package.json, đúng tệp khóa và mọi nguồn cung cấp phần phụ thuộc vẫn truy cập được. Hãy đo từng dự án, dừng các tiến trình đang dùng thư mục rồi chỉ chuyển node_modules đã kiểm tra vào Thùng rác. Cài lại bằng đúng trình quản lý gói và chỉ dọn Thùng rác sau khi build, kiểm thử và chạy ứng dụng thành công.

Phân biệt node_modules với dự án và bộ nhớ đệm
node_modules là cây phần phụ thuộc đã cài của một dự án và chỉ có thể dựng lại khi mọi đầu vào vẫn còn. Xóa thư mục này khiến dự án không thể chạy hoặc build cho đến khi cài lại xong. package.json, tệp khóa, mã nguồn, cấu hình, bản vá, tệp cấu hình workspace và lịch sử Git là công thức để dựng lại nên phải giữ nguyên. Bộ nhớ đệm tải xuống dùng chung của npm, thường ở ~/.npm, là loại dữ liệu khác, có phạm vi ảnh hưởng và chi phí khôi phục riêng.
Xác nhận phần phụ thuộc thực sự dựng lại được
Tệp khóa giúp lần cài lại ổn định hơn nhưng không chứa bản sao các gói. Hãy xác định trình quản lý gói cùng phiên bản của kho mã và giữ package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lock hoặc bun.lockb tương ứng. npm v12 không còn đọc npm-shrinkwrap.json. Nếu đó là tệp khóa duy nhất của dự án, hãy sao lưu hoặc commit rồi đổi tên tệp có cùng định dạng này thành package-lock.json trước khi dùng npm v12; tuyệt đối không ghi đè package-lock.json đang có. Đồng thời kiểm tra registry riêng, VPN, phần phụ thuộc qua Git, file: và workspace cục bộ, tài nguyên tải từ nguồn ngoài cùng bộ công cụ biên dịch mô-đun native. Mọi chỉnh sửa chỉ tồn tại trong node_modules sẽ mất vĩnh viễn.
- Tại thư mục gốc dự án, chạy pwd và du -sh ./node_modules; đồng thời ghi lại dung lượng trống của macOS.
- Kiểm tra package.json, đúng tệp khóa, cấu hình workspace và thay đổi cục bộ; nếu npm-shrinkwrap.json là tệp khóa cũ duy nhất, hãy sao lưu hoặc commit rồi đổi tên thành package-lock.json trước khi dùng npm v12, không ghi đè tệp đang có.
- Xác minh có thể truy cập registry riêng, phần phụ thuộc qua Git và file:, gói cục bộ, tài nguyên tải từ nguồn ngoài cùng công cụ build; dừng mọi tiến trình đang dùng node_modules.
- Chỉ chuyển node_modules đã xác nhận vào Thùng rác rồi cài lại từ đúng thư mục gốc bằng trình quản lý gói và chế độ không sửa tệp khóa mà kho mã quy định.
- Chạy build, kiểm thử, lint và ứng dụng; đo lại dung lượng rồi chỉ dọn Thùng rác sau khi tất cả đều đạt.
Đừng để node_modules trở thành bản duy nhất của một gói hoặc bản sửa thủ công. Nếu không còn tải được đúng phiên bản phần phụ thuộc và mã nguồn của nó cũng không được lưu ở nơi khác, việc xóa có thể khiến dự án cũ không thể phục hồi.
Chỉ xóa một thư mục phần phụ thuộc đã kiểm tra
Trong đúng thư mục dự án, dùng Finder chuyển riêng node_modules vào Thùng rác, không chuyển cả thư mục kho mã cha. rm -rf ./node_modules bỏ qua Thùng rác và không thể hoàn tác, vì vậy phải xác nhận thư mục gốc bằng pwd trước khi cân nhắc. Cài lại tại gốc đó bằng npm ci nếu package-lock.json hợp lệ và là nguồn chuẩn; nếu kho dùng trình quản lý gói khác, hãy chạy pnpm install --frozen-lockfile, yarn install --immutable với Yarn hiện đại, yarn install --frozen-lockfile với Yarn Classic hoặc bun install --frozen-lockfile. Với monorepo, hãy coi toàn bộ workspace là một hệ thống do tệp khóa ở gốc chi phối.
Cài lại và xác minh toàn bộ dự án
Cài đặt hoàn tất chưa chứng minh dự án đã phục hồi đầy đủ. Hãy chạy các lệnh build, test, lint và khởi động theo tài liệu của dự án; mô-đun native và lifecycle script vẫn có thể lỗi sau khi Node.js, macOS hoặc toolchain thay đổi. Việc khôi phục cần tải xuống, giải nén, tạo liên kết và có thể phải biên dịch. Nếu thất bại, hãy khôi phục thư mục từ Thùng rác nếu còn, giữ nhật ký lỗi rồi kiểm tra thông tin xác thực, mạng, phiên bản và tệp khóa trước khi dọn dự án khác.
Ranh giới xóa và chi phí khôi phục
Tìm thư mục node_modules lớn, bảo vệ mã nguồn và tệp khóa, xóa thư mục phần phụ thuộc của từng dự án rồi cài lại an toàn bằng npm, pnpm, Yarn hoặc Bun.
| Mục hoặc thao tác | Nơi kiểm tra | Hậu quả |
|---|---|---|
| Phân biệt node_modules với dự án và bộ nhớ đệm | <dự án>/node_modules | node_modules là cây phần phụ thuộc đã cài của một dự án và chỉ có thể dựng lại khi mọi đầu vào vẫn còn. Xóa thư mục này khiến dự án không thể chạy hoặc build cho đến khi cài lại xong. package.json, tệp khóa, mã nguồn, cấu hình, bản vá, tệp cấu hình workspace và lịch sử Git là công thức để dựng lại nên phải giữ nguyên. Bộ nhớ đệm tải xuống dùng chung của npm, thường ở ~/.npm, là loại dữ liệu khác, có phạm vi ảnh hưởng và chi phí khôi phục riêng. |
| Xác nhận phần phụ thuộc thực sự dựng lại được | package.json + tệp khóa + cấu hình workspace | Tệp khóa giúp lần cài lại ổn định hơn nhưng không chứa bản sao các gói. Hãy xác định trình quản lý gói cùng phiên bản của kho mã và giữ package-lock.json, pnpm-lock.yaml, yarn.lock, bun.lock hoặc bun.lockb tương ứng. npm v12 không còn đọc npm-shrinkwrap.json. Nếu đó là tệp khóa duy nhất của dự án, hãy sao lưu hoặc commit rồi đổi tên tệp có cùng định dạng này thành package-lock.json trước khi dùng npm v12; tuyệt đối không ghi đè package-lock.json đang có. Đồng thời kiểm tra registry riêng, VPN, phần phụ thuộc qua Git, file: và workspace cục bộ, tài nguyên tải từ nguồn ngoài cùng bộ công cụ biên dịch mô-đun native. Mọi chỉnh sửa chỉ tồn tại trong node_modules sẽ mất vĩnh viễn. |
| Chỉ xóa một thư mục phần phụ thuộc đã kiểm tra | Thùng rác / cài lại bằng trình quản lý gói | Trong đúng thư mục dự án, dùng Finder chuyển riêng node_modules vào Thùng rác, không chuyển cả thư mục kho mã cha. rm -rf ./node_modules bỏ qua Thùng rác và không thể hoàn tác, vì vậy phải xác nhận thư mục gốc bằng pwd trước khi cân nhắc. Cài lại tại gốc đó bằng npm ci nếu package-lock.json hợp lệ và là nguồn chuẩn; nếu kho dùng trình quản lý gói khác, hãy chạy pnpm install --frozen-lockfile, yarn install --immutable với Yarn hiện đại, yarn install --frozen-lockfile với Yarn Classic hoặc bun install --frozen-lockfile. Với monorepo, hãy coi toàn bộ workspace là một hệ thống do tệp khóa ở gốc chi phối. |
| Cài lại và xác minh toàn bộ dự án | build + kiểm thử + khởi chạy ứng dụng | Cài đặt hoàn tất chưa chứng minh dự án đã phục hồi đầy đủ. Hãy chạy các lệnh build, test, lint và khởi động theo tài liệu của dự án; mô-đun native và lifecycle script vẫn có thể lỗi sau khi Node.js, macOS hoặc toolchain thay đổi. Việc khôi phục cần tải xuống, giải nén, tạo liên kết và có thể phải biên dịch. Nếu thất bại, hãy khôi phục thư mục từ Thùng rác nếu còn, giữ nhật ký lỗi rồi kiểm tra thông tin xác thực, mạng, phiên bản và tệp khóa trước khi dọn dự án khác. |
Câu hỏi thường gặp
Xóa node_modules trên Mac có an toàn không?
Thường là có nếu package.json, đúng tệp khóa, tệp workspace, mã nguồn và mọi nguồn cung cấp phần phụ thuộc vẫn còn. Dự án sẽ không chạy cho đến khi cài lại và xác minh xong.
Có nên xóa luôn package-lock.json không?
Không. package-lock.json là đầu vào cho lần cài npm có thể lặp lại. npm v12 không còn đọc npm-shrinkwrap.json; chỉ khi đây là tệp khóa duy nhất, hãy sao lưu hoặc commit rồi đổi tên tệp cùng định dạng đó thành package-lock.json, không ghi đè một package-lock.json đang có.
node_modules có phải là bộ nhớ đệm npm không?
Không. node_modules là phần phụ thuộc đã cài của một dự án; bộ nhớ đệm dùng chung của npm thường nằm ở ~/.npm. Xóa mục này không tự xóa mục kia.
Nguồn tham khảo