NPM remove package: Cách xoá package khỏi dự án NodeJS

NPM remove package là thao tác cơ bản nhưng quan trọng giúp lập trình viên loại bỏ những gói thư viện không còn sử dụng trong dự án Node.js, dù bạn đang dọn dẹp các dependency, xử lý sự cố, hay tối ưu kích thước dự án, việc gỡ package đúng cách sẽ giúp dự án ổn định và sạch sẽ hơn.

Đọc bài viết sau để được giải đáp chi tiết hơn về:

  • Tổng quan về npm remove package và cách sử dụng câu lệnh uninstall để gỡ bỏ một package. 
  • Những cách gỡ bỏ package thường gặp trong npm. 
  • Ứng dụng của npm remove package.
  • Một số câu hỏi thường gặp về cách gỡ bỏ package trong npm. 

Đọc chi tiết: NPM là gì: Khái niệm, lệnh và thao tác cơ bản với NPM

npm remove package là gì?

NPM, viết tắt của Node Package Manager, là trình quản lý gói (package) mặc định của Node.js. Công cụ này được phát triển bởi Isaac Z. Schlueter, viết hoàn toàn bằng ngôn ngữ JavaScript, và ra mắt lần đầu tiên vào ngày 12 tháng 1 năm 2010. 

Trong NPM, remove package nghĩa là gỡ bỏ một package bằng cách dùng lệnh: 

npm uninstall

Lệnh này sẽ gỡ cài đặt một package, loại bỏ hoàn toàn mọi thành phần mà npm đã cài đặt liên quan đến package đó. Ngoài ra, lệnh còn xóa package khỏi các danh mục trong file package.json, bao gồm dependencies, devDependencies, optionalDependencies, peerDependencies.

Nếu dự án của bạn có file npm-shrinkwrap.json hoặc package-lock.json, npm cũng sẽ tự động cập nhật các file này để phản ánh thay đổi. 

npm uninstall và npm remove

npm removenpm uninstall thực chất là hai lệnh tương đương nhau. Cả hai đều dùng để xóa package khỏi dự án và cập nhật lại package.json. Trong đó:

  • npm uninstall là cú pháp gốc
  • npm remove là một alias (tên viết tắt) được npm hỗ trợ để giúp người dùng thao tác nhanh hơn.

Cấu trúc lệnh npm uninstall

  • Cú pháp: npm uninstall [<@scope>/]<pkg>...
  • Các aliases: unlink, remove, rm, r, un
  • Các flag phổ biến:
FlagChức năng
--save / -SYêu cầu npm xóa package khỏi các file trên. Đây là hành vi mặc định, tuy nhiên bạn có thể cần dùng cờ này nếu trong file npmrc có thiết lập save=false.
--no-saveYêu cầu npm không xóa package khỏi các file package.json, npm-shrinkwrap.json hoặc package-lock.json.
-D / --save-devGỡ package trong devDependencies
-g / --globalChế độ global => npm sẽ gỡ cài đặt package khỏi phạm vi toàn hệ thống (global).

Đọc chi tiết: NPM install: Hướng dẫn cách cài đặt và quản lý các gói package

Những cách remove package phổ biến trong npm

NPM cung cấp nhiều cách khác nhau để remove package, tùy vào mục đích và phạm vi mà bạn muốn thực hiện. Từ việc gỡ cài đặt trong dự án cục bộ, loại bỏ package toàn cục, cho đến dọn dẹp các dependency không còn sử dụng.

Dưới đây, ITviec sẽ giới thiệu những phương pháp phổ biến và hiệu quả nhất giúp bạn gỡ package trong npm một cách an toàn, nhanh chóng và đúng chuẩn.

Gỡ bỏ package với npm uninstall

Để gỡ một package bằng lệnh npm uninstall, bạn có thể sử dụng cú pháp và chạy lệnh này trong thư mục chứa package đó.

npm uninstall <tên_package>

Ví dụ, sử dụng Express, một framework phổ biến của Node.js. Express sẽ được liệt kê trong phần dependencies của file package.json. Tuy nhiên, sau khi chạy lệnh:

npm uninstall express

Express sẽ không còn xuất hiện trong danh sách dependency nữa. Thậm chí, nếu dự án không còn gói phụ thuộc nào khác, khóa dependencies cũng sẽ biến mất hoàn toàn khỏi file package.json.

Gỡ bỏ DevDependency bằng npm uninstall

Dev dependency là những package chỉ được sử dụng trong quá trình phát triển, chứ không cần thiết khi chạy ứng dụng trong môi trường sản xuất. Để gỡ một dev dependency, bạn cần thêm flag -D hoặc --save-dev vào sau lệnh npm uninstall, rồi chỉ định tên của package cần gỡ.

Bạn sẽ cần chạy lệnh dưới đây trong thư mục dự án, nơi chứa dependency đó:

npm uninstall -D <tên_package>
npm uninstall --save-dev <tên_package>

Ví dụ, sử dụng Nodemon, công cụ cho phép ứng dụng Node.js tự động tải lại (reload) bất cứ khi nào có thay đổi trong file hoặc thư mục trong quá trình phát triển. Nodemon được liệt kê trong phần devDependencies của file package.json. Khi chạy lệnh sau:

npm uninstall -D nodemon

Nodemon sẽ bị xóa hoàn toàn khỏi package.json. Kết quả là không còn dòng khai báo Nodemon trong danh sách devDependencies nữa.

Gỡ bỏ Global Package bằng cách sử dụng npm uninstall

Global package là những package được cài đặt toàn cục trên máy tính, cho phép bạn sử dụng chúng ở bất kỳ dự án nào mà không cần phải cài đặt lại mỗi lần sử dụng. Để gỡ một global package, bạn cần thêm flag -g vào lệnh npm uninstall, sau đó chỉ định tên của package muốn xóa:

npm uninstall -g <tên_package>

Ví dụ, sử dụng package CORS (Cross-Origin Resource Sharing). CORS là cơ chế giúp trình duyệt cho phép gửi yêu cầu (request) giữa các nguồn khác nhau, vượt qua giới hạn Same Origin Policy (SOP) mặc định. Package CORS trong npm giúp bạn cấu hình cơ chế này dễ dàng khi dùng Express.

CORS không được liệt kê trong file package.json, vì đây là package được cài đặt toàn cục (global) chứ không thuộc phạm vi của dự án hiện tại, chứ không phải trong thư mục của một dự án cụ thể.

Nếu bạn cài đặt một gói toàn cục và muốn xem danh sách các gói đó, hãy chạy lệnh:

npm list -g

Khi đó, bạn sẽ thấy CORS xuất hiện trong danh sách các gói được cài đặt toàn cục. Để gỡ cài đặt CORS toàn cục sẽ chạy lệnh

npm uninstall -g cors

Sau khi chạy lệnh này, bạn có thể kiểm tra lại bằng lệnh và sẽ thấy rằng CORS đã không còn trong danh sách nữa.

npm list -g

Gỡ bỏ tất cả các package không sử dụng nữa với npm uninstall

Trình quản lý gói npm cung cấp lệnh npm prune, cho phép bạn xóa tất cả các package không còn được sử dụng trong dự án. Bạn có thể dùng lệnh này như sau:

npm prune

Lệnh npm prune giúp bạn dọn dẹp các package dư thừa còn sót lại trong thư mục node_modules. Những gói không còn được liệt kê trong file package.json. Việc chạy lệnh này thường xuyên giúp giảm dung lượng dự án, tránh xung đột dependency, và duy trì môi trường làm việc sạch sẽ, ổn định.

Các lưu ý để remove package trong NPM hiệu quả

Khi làm việc với các dự án Node.js, việc gỡ bỏ package tưởng chừng đơn giản nhưng nếu thao tác không đúng cách có thể dẫn đến lỗi dependency, xung đột phiên bản hoặc tệp cấu hình bị sai lệch. Vì vậy, nắm rõ các best practices khi sử dụng npm remove package sẽ giúp bạn duy trì dự án gọn gàng, ổn định và dễ bảo trì hơn.

Dọn dẹp các dependency không còn sử dụng

Sau khi gỡ bỏ một số package, thư mục node_modules của dự án có thể vẫn còn chứa các dependency dư thừa, những gói từng được cài đặt làm dependency cho các package trước đó. Mặc dù chúng không còn được liệt kê trong file package.json, nhưng chúng thường vẫn tồn tại trong cấu trúc thư mục của dự án, chiếm dung lượng và có thể gây rối khi quản lý lâu dài.

Để xóa các package dư thừa và đảm bảo dự án của bạn chỉ chứa những dependency thực sự cần thiết, bạn có thể sử dụng lệnh sau:

npm prune

Gỡ package mà không cập nhật file package.json

Khi bạn gỡ bỏ một package, việc thay đổi này thông thường sẽ được ghi lại trong các file package.json và package-lock.json. Tuy nhiên, đôi khi bạn có thể muốn gỡ package mà không làm thay đổi các tệp cấu hình này. Ví dụ như:

  • Khi bạn đang debug lỗi build do một package cụ thể gây ra và muốn tạm thời gỡ nó để kiểm tra.
  • Hoặc khi bạn cộng tác trong một dự án nhóm, bạn chỉ muốn thử thay đổi trong môi trường của riêng mình mà không ảnh hưởng đến cấu hình chung của dự án.

Để gỡ một package mà không chỉnh sửa package.json và package-lock.json, bạn có thể dùng flag –no-save như sau:

npm uninstall --no-save <package_name>

Xác nhận việc gỡ cài đặt package

Sau khi chạy lệnh npm uninstall, việc xác minh xem package đã được gỡ bỏ thành công hay chưa là rất quan trọng. Điều này giúp duy trì tính toàn vẹn và ổn định của dự án, đồng thời giảm thiểu nguy cơ xung đột giữa các package.

Để xem danh sách các package được cài đặt cục bộ (local) trong thư mục node_modules, bạn có thể sử dụng lệnh sau ngay trong thư mục dự án:

npm ls

Ngoài ra, bạn cũng có thể dùng lệnh npm ls kèm theo flag -g để xem danh sách các package đã cài đặt toàn cục (global):

npm list -g

Gỡ bỏ package khỏi registry

Trước khi xóa một package khỏi npm registry, bạn cần đảm bảo rằng mình đã đăng nhập vào tài khoản npm. Bạn có thể đăng nhập bằng lệnh sau và nhập thông tin tài khoản khi được yêu cầu.

npm login

Để xóa một phiên bản cụ thể của package khỏi registry, hãy sử dụng lệnh npm unpublish theo cú pháp sau:

npm unpublish <tên_package>@<phiên_bản>
npm unpublish lodash@4.17.21

Sau khi gỡ package khỏi registry, bạn nên xóa bộ nhớ cache của npm để loại bỏ mọi tham chiếu còn sót lại đến package đã bị xóa, bằng cách chạy lệnh:

npm cache clean -f

Ngoài ra, bạn cũng nên lưu ý rằng npm unpublish chỉ nên sử dụng cho package chưa được sử dụng rộng rãi. Bởi vì npm cấm xóa hoàn toàn các package đã được publish hơn 24 giờ, hoặc trừ khi có quyền admin registry nội bộ. 

Các câu hỏi thường gặp về npm remove package

Lệnh npm remove có xóa package khỏi thư mục node_modules không?

Có. Lệnh npm remove sẽ xóa package khỏi thư mục node_modules và đồng thời cập nhật file package.json để loại bỏ dependency đó. Khi bạn chạy lệnh này, npm sẽ tự động gỡ toàn bộ tệp liên quan đến package bị xóa, giúp dự án sạch hơn và tránh lỗi xung đột thư viện.

Gỡ bỏ một devDependency khác gì so với dependency thông thường?

Cách thực hiện tương tự nhau, nhưng khác ở vị trí được xóa trong package.json. Khi gỡ một devDependency, npm sẽ loại bỏ nó khỏi phần “devDependencies” (các gói dùng trong môi trường phát triển). Trong khi đó, gỡ một dependency thông thường sẽ ảnh hưởng đến phần “dependencies” (các gói cần thiết cho sản phẩm chạy thực tế).

npm prune là gì?

Lệnh này dùng để xóa các package “dư thừa” (extraneous packages). Nếu bạn chỉ định tên một package cụ thể, thì chỉ những package trùng khớp với tên được cung cấp mới bị xóa. Package dư thừa là những package có trong thư mục node_modules nhưng không được liệt kê trong danh sách dependency của bất kỳ package nào trong dự án.

  • Nếu bạn thêm flag --production hoặc khi biến môi trường NODE_ENV được đặt là production, lệnh này sẽ xóa các package nằm trong phần devDependencies.
  • Ngược lại, sử dụng --no-production sẽ vô hiệu hóa việc NODE_ENV đang được đặt ở chế độ production.
  • Nếu thêm flag --dry-run, không có thay đổi thực tế nào được thực hiện.
  • Nếu sử dụng flag --json, các thay đổi mà npm prune đã (hoặc sẽ) thực hiện sẽ được in ra dưới dạng đối tượng JSON.

Tổng kết

NPM remove package không chỉ là lệnh giúp bạn xóa gói khỏi dự án, mà còn là bước quan trọng trong việc giữ cho môi trường lập trình luôn sạch sẽ và dễ bảo trì. Hiểu rõ cách sử dụng và những tùy chọn mở rộng của npm remove giúp bạn tối ưu quy trình phát triển, tiết kiệm dung lượng và tránh xung đột dependency không cần thiết.

TÁC GIẢ
Tuong Uyen
Tuong Uyen

Senior Content Writer

Có hơn 3 năm kinh nghiệm chuyên thực hiện các phỏng vấn chuyên sâu về kiến thức công nghệ thông tin với nhiều chuyên gia IT thuộc nhiều lĩnh vực IT hấp dẫn như Software Development, Game, Blockchain, Data, RPA,… Với niềm yêu thích và nghiên cứu về những kiến thức nền tảng mà mọi người kỹ sư công nghệ thông tin nào cũng cần phải nắm vững, như C++, Framework Front-End, Web, Mobile, Database,…, Uyên mang đến đa dạng những bài viết kiến thức IT cho mọi người đọc từ cơ bản đến nâng cao.