Clear npm cache là thao tác dùng để xoá bộ nhớ đệm (cache) mà npm sử dụng để lưu trữ các gói đã tải về nhằm tăng tốc độ cài đặt.Trong hầu hết trường hợp npm tự xử lý cache rất tốt, nhưng nếu cache bị hỏng hoặc chứa dữ liệu không hoàn chỉnh dẫn đến lỗi cài đặt hoặc checksum, bạn cần khắc phục thế nào? Vì sao chỉ nên clear npm cache khi gặp lỗi, không phải là bước dọn dẹp định kỳ? Cùng khám phá trong bài viết này nhé.
Đọc bài viết sau để được giải đáp chi tiết hơn về:
- Cơ chế hoạt động của npm cache
- Những trường hợp nào thực sự cần clear cache
- Các lưu ý cần biết trước khi thao tác clear cache
- Cách clear npm cache đúng chuẩn
- Những lỗi phổ biến khi clear cache và cách xử lý
- Hướng dẫn clear cache trong môi trường React Native
Đọc chi tiết: NPM là gì: Khái niệm, lệnh và thao tác cơ bản với NPM
Hiểu đúng về clear cache trong npm
Muốn dùng npm clear cache đúng cách, trước hết phải hiểu: npm cache là gì, nằm ở đâu, hoạt động ra sao, có vai trò gì?
npm cache là gì?
Khi bạn cài đặt một package bằng npm, npm sẽ tải các tệp của package về và lưu trữ chúng trong một thư mục cache cục bộ. Cơ chế lưu cache này giúp tái sử dụng các tệp đã được lưu, thay vì phải tải lại từ mạng. Từ đó giúp tăng tốc độ cài đặt và giảm băng thông sử dụng, đặc biệt hữu ích trong môi trường có nhiều lần build hoặc cài đặt package thường xuyên.
npm lưu toàn bộ dữ liệu cache vào một thư mục ẩn tên là _cacache:
- Với Linux: ~/.npm/_cacache
- Với Windows: %LocalAppData%\npm-cache\_cacache
Thư mục này nằm trong khu vực cache mà npm đã cấu hình sẵn. Bên trong đó chứa tất cả dữ liệu liên quan đến các yêu cầu HTTP và những tệp mà npm tải về trong quá trình cài đặt package. npm không cung cấp cách xem hoặc quản lý nội dung cache trực tiếp. Nếu thực sự cần “đào sâu” vào nó, bạn sẽ phải dùng thư viện cacache.
npm cache hoạt động thế nào?
Cache của npm chỉ đơn thuần là một nơi tạm giữ dữ liệu để giúp việc cài đặt package nhanh hơn. Nó không phải nơi lưu trữ dữ liệu vĩnh viễn. npm không đảm bảo rằng một file từng được cache sẽ luôn còn đó về sau. Nếu cache bị hỏng, npm sẽ xoá phần dữ liệu lỗi đi.
npm cam kết rằng nếu cache trả lại dữ liệu, thì dữ liệu đó chính xác là thứ đã được lưu vào trước đó.
npm cũng không tự động xoá cache theo thời gian, cache sẽ tiếp tục lớn dần khi bạn cài thêm nhiều package.
Kể từ npm v5:
- npm truy cập toàn bộ cache qua pacote, thư viện chịu trách nhiệm fetch package từ npm registry.
- npm dùng hệ thống cache có kiểm tra nội dung (content-addressable cache) với package-lock.json để lock chính xác phiên bản:
– Nếu có lockfile: npm luôn cài đúng phiên bản đã được lock. Cache chỉ được dùng nếu dữ liệu khớp hoàn toàn với mã băm trong lockfile.
– Nếu không có lockfile: npm vẫn kiểm tra phiên bản cần thiết theo package.json, rồi mới xem cache có tương thích tương ứng hay không.
Do đó, cache chỉ giúp npm tăng tốc, không quyết định phiên bản cài đặt, mà package.json và package-lock.json mới là nguồn gốc. npm không bao giờ sử dụng lại phiên bản cũ từ cache nếu lockfile yêu cầu phiên bản mới (hoặc ngược lại).
Khi nào cần clear cache?
Bất kỳ dữ liệu nào đi vào hoặc đi ra khỏi cache đều được npm kiểm tra tính toàn vẹn (integrity). Nếu phát hiện dữ liệu bị hỏng, npm sẽ báo lỗi hoặc tự hiểu rằng dữ liệu đó cần được tải lại, và pacote sẽ tự động tải lại cho bạn. Cache từ v5 trở đi là self-healing, nó tự quản lý, tự sửa lỗi và không cần dọn thường xuyên. Vì vậy, theo khuyến nghị từ npm, trong thực tế bạn hầu như không cần phải tự clear cache, trừ khi bạn muốn giải phóng dung lượng đĩa.
Đó cũng là lý do câu lệnh npm cache clean bắt buộc phải có --force.
Nếu bạn muốn kiểm tra toàn bộ cache xem có mục nào bị lỗi hay không, bạn có thể chạy lệnh:
npm cache verify
Hướng dẫn cách clear npm cache
Nếu bạn thật sự cần clear cache, hãy dùng lệnh:
npm cache clean --force
Flag --force là bắt buộc vì npm muốn tránh trường hợp người dùng xoá cache một cách không cần thiết.
Để xác minh cache đã được xoá thành công, bạn có thể chạy lệnh:
npm cache verify
Lệnh này sẽ kiểm tra tính toàn vẹn của cache còn lại và dọn các mục lỗi hoặc không hợp lệ.
Các lưu ý quan trọng khi clear npm cache
- Cache tồn tại là để tăng tốc cài đặt. Clear cache khiến npm phải tải lại tất cả package từ registry dẫn đến cài đặt package chậm hơn. Do đó, bạn chỉ nên clear cache khi cần thiết.
- Clear cache trong npm chỉ nên dùng khi cache thật sự bị hỏng hoặc khi việc cài đặt package gặp lỗi và bạn cần “làm sạch” để cài lại từ đầu. Đây không phải thao tác bảo trì định kỳ, cũng không phải cách để “làm sạch môi trường” như nhiều người lầm tưởng. Thực tế, npm cache không bao giờ lỗi thời theo thời gian; nó chỉ gây vấn đề khi bị hòng (corrupted), chẳng hạn như tải thiếu file, mất điện giữa chừng, lỗi ổ đĩa hoặc checksum không khớp. Ngoài những trường hợp bất thường đó, cache không cần dọn thủ công.
- Sử dụng phiên bản npm mới nhất để đảm bảo khả năng tương thích và tận dụng các cải tiến mới về cơ chế lưu cache.
- Cân nhắc kỹ trước khi xoá cache nếu bạn đang làm việc trong môi trường có kết nối internet hạn chế, vì thao tác này có thể ảnh hưởng đến khả năng cài đặt package khi làm việc offline.
Một số lỗi thường gặp khi clear npm cache
Việc xóa cache npm đôi khi có thể gây ra một số lỗi mới, thường liên quan đến quyền truy cập, cờ lệnh hoặc cấu hình hệ thống. Dưới đây là các lỗi phổ biến và cách xử lý để giúp bạn khắc phục nhanh chóng khi làm việc với npm cache.
- Lỗi quyền truy cập (EACCES hoặc EPERM): Lỗi này xuất hiện khi npm không có quyền truy cập hoặc xoá các tệp trong thư mục cache. Bạn có khắc phục bằng cách chạy lệnh với sudo đối với Linux và MacOS. Hoặc mở Command Prompt hoặc PowerShell bằng quyền Run as Administrator đối với hệ điều hành Windows.
- Lỗi yêu cầu phải dùng flag –force: Từ npm phiên bản 5 trở đi, việc xoá cache bị vô hiệu hóa mặc định để tránh mất dữ liệu. Để khắc phục, bạn nên luôn thêm flag
--forcemỗi khi chạy lệnh. - Lệnh không xoá được gì: Tình huống này thường giống lỗi ở trên – lệnh không hoạt động nếu thiếu
--forcehoặc khi dùng các phiên bản npm cũ. Để khắc phục, bạn nên thêm–forceđể kích hoạt xóa cache hoặc kiểm tra phiên bản npm và tiến hành update npm nếu cần. - Cache không được xoá hoàn toàn: Đôi khi lệnh
npm cache clean --forcekhông xoá hết dữ liệu trong thư mục cache. Hoặc dùng lệnhrmdir /s /q%LocalAppData%\npm-cache đối với hệ điều hành Windows. - Cache bị hỏng vẫn còn sau khi dọn: Một số dữ liệu cache lỗi hoặc không đầy đủ có thể vẫn tồn tại. Để khắc phục, bạn nên chạy lệnh để kiểm tra và dọn dẹp chuyên sâu hơn với lệnh npm cache verify
- Lệnh không được nhận diện hoặc chạy nhưng không có phản hồi: Điều này thường cho thấy Node.js hoặc npm đã bị lỗi hoặc cài đặt không đầy đủ. Để khắc phục, bạn hãy cài đặt lại Node.js thông qua installer chính thức hoặc dùng trình quản lý phiên bản như nvm để cài lại npm.
- Cài đặt global vẫn lỗi sau khi reset cache: Không phải lúc nào cache cũng là nguyên nhân gốc rễ của sự cố. Bạn có thể xóa thư mục node_modules và file package-lock.json sau đó chạy lại câu lệnh npm install.
Các câu hỏi thường gặp về npm clear cache
Xóa cache npm có an toàn không?
Có, thao tác xoá cache npm hoàn toàn an toàn và không gây ảnh hưởng đến dự án của bạn. Lệnh npm clear cache chỉ tác động đến bộ nhớ đệm mà npm lưu tạm để tăng tốc cho các lần cài đặt package. Việc xoá cache không làm thay đổi mã nguồn, cấu trúc dự án hay các package đã được cài đặt.
Trong nhiều trường hợp, việc dọn cache còn giúp sửa lỗi xung đột package, lỗi tải về không đầy đủ hoặc data bị hỏng trong quá trình cài đặt.
Có thể tự động hóa quá trình xóa cache npm không?
Về lý thuyết, bạn có thể tự động hoá việc xoá cache bằng script, nhưng đây không phải là cách thực hiện tốt. Npm cache được thiết kế để tự quản lý và hiếm khi cần can thiệp thủ công. Trong CI/CD, việc xóa cache còn làm build chậm hơn và không mang lại lợi ích, vì hệ thống CI đã có cơ chế cache riêng.
Do đó, bạn chỉ nên clear npm cache khi gặp lỗi liên quan đến integrity hoặc tarball bị hỏng, những trường hợp rất hiếm gặp. Không nên thiết lập cron job hoặc workflow tự động xoá cache định kỳ.
Việc xóa cache npm có làm mất các package đã cài đặt không?
Không, xoá cache npm không xoá bất kỳ package nào đang được cài đặt trong dự án của bạn. Cache của npm chỉ là nơi lưu trữ tạm thời các file đã tải về để tăng tốc cho lần cài đặt sau. Package thật sự mà dự án sử dụng vẫn nằm trong thư mục node_modules và không bị ảnh hưởng khi bạn dọn cache. Lệnh npm clear cache không xoá dependencies, không xoá lock file, và cũng không thay đổi cấu hình dự án.
Làm thế nào để clear npm cache trong các dự án React Native?
Khi làm việc với các dự án React Native, bạn có thể gặp phải các vấn đề về cache khiến các thay đổi mới không được phản ánh. Để dọn dẹp cache và khắc phục tình trạng này, bạn có thể làm theo các bước sau.
Để thực hiện dọn cache trong React Native, bạn tiến hành chạy lệnh:
npm start --reset-cache
Lệnh này sẽ khởi động lại React Native packager với bộ nhớ cache sạch, giúp cập nhật các thay đổi mới nhất trong dự án.
Nếu lệnh không thực thi được, bạn có thể thực hiện xóa các file và thư mục của Watchman:
watchman watch-del-all
Hoặc tiến hành xóa cache của React Native và Metro:
rm -rf $TMPDIR/react-native-packager-cache-*
rm -rf $TMPDIR/metro-bundler-cache-*
Hoặc bạn cũng có thể thực hiện xóa thư mục node_modules, dọn npm cache và cài lại package như sau:
rm -rf node_modules
npm cache clean --force
npm install
Thao tác này đảm bảo môi trường phát triển của bạn được làm sạch hoàn toàn, giúp các thay đổi mới trong dự án React Native được áp dụng chính xác.
Nếu muốn dọn cache, tôi có nên xoá cả ~/.npm không?
~/.npm không chỉ chứa thư mục cache ( _cacache), mà còn chứa rất nhiều thứ quan trọng khác. Vì vậy nếu xóa toàn bộ ~/.npm có thể xóa các file cấu hình khác chứ không chỉ riêng cache. Nếu cần xoá thủ công, chỉ được xoá thư mục _cacache.
Tổng kết về npm clear cache
Npm clear cache là một lệnh quan trọng nhưng lại thường bị hiểu nhầm và sử dụng sai cách. Hy vọng bài viết đã giúp bạn nhìn rõ cơ chế npm cache và biết cách xử lý lỗi một cách chủ động, thay vì “xóa đại cho chắc”. Một khi nắm đúng nguyên tắc, bạn sẽ cài đặt package nhanh hơn, ít lỗi hơn và làm việc hiệu quả hơn với hệ sinh thái npm.

