
Chào các bạn Gen Z tài năng! Hôm nay, Creyt sẽ kéo các bạn vào một chủ đề nghe có vẻ đơn giản nhưng lại cực kỳ quan trọng trong thế giới Node.js: 'Yarn remove'. Tưởng tượng project của các bạn là một căn nhà, và mỗi package là một món đồ nội thất. Lúc mới dọn vào thì đồ đạc ít, nhà cửa thoáng đãng. Nhưng càng ngày, các bạn cứ 'yarn add' tới tấp, nào là thư viện này, framework kia, rồi tool nọ... Thế là căn nhà project của các bạn bắt đầu biến thành bãi chiến trường, đầy rẫy những 'món đồ' không dùng đến nữa. Lúc đó, chúng ta cần một công cụ để 'dọn nhà', và đó chính là lúc anh bạn 'yarn remove' ra tay!
1. Yarn remove là gì? Để làm gì?
Đơn giản thôi, 'yarn remove' là câu thần chú giúp bạn 'đá' một package (hay còn gọi là dependency) ra khỏi dự án Node.js của mình. Nó giống như việc bạn quyết định vứt bỏ cái ghế sofa cũ kỹ mà bạn không còn dùng nữa, hoặc trả lại cái máy chơi game mà bạn đã mượn bạn bè nhưng giờ hết hứng thú rồi.
Mục đích chính của nó là giữ cho dự án của bạn 'sạch sẽ', gọn gàng và quan trọng hơn là nhẹ nhàng. Một dự án ít dependency thừa thãi sẽ khởi động nhanh hơn, ít lỗi hơn, và quan trọng nhất là dễ quản lý hơn.
Nó sẽ làm 3 việc chính:
- Xóa package đó ra khỏi thư mục
node_modulescủa bạn. - Cập nhật file
package.jsonbằng cách gỡ bỏ tên package đó ra khỏi danh sáchdependencieshoặcdevDependencies. - Cập nhật file
yarn.lockđể đảm bảo tính nhất quán của các dependency trong tương lai.
2. Code Ví Dụ Minh Họa
Nói suông thì ai cũng nói được, giờ chúng ta 'xắn tay áo' vào thực hành nhé! Để dễ hình dung, chúng ta sẽ bắt đầu với một project Node.js 'tinh khôi':
mkdir my-yarn-project
cd my-yarn-project
yarn init -y # Khởi tạo một project Node.js mới
Giờ chúng ta sẽ 'add' vài package vào như bình thường:
yarn add lodash express # Thêm lodash và express vào dependencies
yarn add nodemon --dev # Thêm nodemon vào devDependencies (chỉ dùng khi phát triển)
Kiểm tra file package.json của bạn, nó sẽ trông tương tự thế này (phiên bản có thể khác):
{
"name": "my-yarn-project",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"express": "^4.17.1",
"lodash": "^4.17.21"
},
"devDependencies": {
"nodemon": "^2.0.7"
}
}
Bây giờ, giả sử chúng ta nhận ra lodash không còn cần thiết nữa, hoặc chúng ta muốn chuyển sang dùng các helper function của ES6. Đã đến lúc 'tiễn' nó đi:
yarn remove lodash
Nếu bạn muốn gỡ một dependency chỉ dùng trong quá trình phát triển (development), ví dụ như nodemon:
yarn remove nodemon --dev
Và nếu bạn có một peerDependency mà bạn muốn gỡ bỏ (ít phổ biến hơn, thường dùng cho các thư viện/plugin): peerDependency là một dependency mà project của bạn mong đợi người dùng sẽ cài đặt, chứ không phải tự động cài đặt cho họ.
yarn remove some-peer-package --peer
Sau mỗi lệnh remove, hãy mở file package.json và yarn.lock ra xem. Các bạn sẽ thấy tên của package đã biến mất một cách 'thần kỳ'! node_modules cũng sẽ tự động được dọn dẹp.

3. Mẹo (Best Practices) từ Creyt:
- Kiểm tra 'hiện trường' sau khi 'gây án': Sau khi
yarn remove, luôn mởpackage.jsonra xem nó đã được cập nhật đúng chưa. Đôi khi, do lỗi nào đó, hoặc bạn chạy lệnh sai, nó có thể không được cập nhật. Cẩn thận không thừa! - Hiểu rõ 'bạn bè' của mình: Luôn phân biệt được đâu là
dependencies(những thứ project cần để chạy) và đâu làdevDependencies(những thứ chỉ cần khi phát triển). Gỡ nhầmdependenciescó thể khiến project của bạn 'đứng hình' đấy! - 'Dọn dẹp' định kỳ: Đừng để project của bạn thành 'bãi rác công nghệ'. Thỉnh thoảng, hãy review lại
package.jsonđể xem có package nào 'mọc râu' mà bạn không dùng nữa không. Một dự án gọn gàng là một dự án hạnh phúc. - Khi nghi ngờ,
yarn install: Nếu bạn lỡ tay xóa thủ công gì đó trongnode_moduleshoặc cảm thấyyarn.lockcó vấn đề sau khi remove, cứ chạyyarn installđể Yarn tự động kiểm tra và sửa lại các dependency cho đúng vớipackage.json.
4. Ứng dụng thực tế các ứng dụng/website đã ứng dụng
Hầu như mọi dự án Node.js, từ những backend API với Express, những ứng dụng React/Vue/Angular frontend, cho đến các tool command-line nhỏ, đều cần đến yarn remove. Ví dụ, một dự án React ban đầu có thể dùng moment.js để xử lý thời gian, nhưng sau đó team quyết định chuyển sang date-fns vì nhẹ hơn và có tree-shaking tốt hơn. Lúc đó, yarn remove moment là điều tất yếu.
Các website lớn như Facebook (đã dùng Yarn từ lâu), Instagram, hay bất kỳ startup nào dùng JavaScript/Node.js đều áp dụng triệt để việc quản lý dependency bằng Yarn (hoặc npm). Việc gỡ bỏ dependency thừa là một phần không thể thiếu trong quy trình phát triển để đảm bảo hiệu suất và bảo trì. Một project với hàng trăm dependency mà không được dọn dẹp định kỳ sẽ rất khó bảo trì và dễ phát sinh lỗi.
5. Thử nghiệm đã từng và hướng dẫn nên dùng cho case nào
Khi nào nên dùng yarn remove?
- Khi bạn đổi thư viện: Như ví dụ
moment.jssangdate-fnsở trên, hoặc đổi từaxiossangfetchAPI gốc của trình duyệt. - Khi bạn 'refactor' code và không còn cần một chức năng cụ thể: Ví dụ, bạn tự viết một hàm xử lý chuỗi thay vì dùng một phần của
lodash, hoặc bạn không còn cần một công cụ test cũ nữa. - Khi bạn muốn giảm kích thước bundle của ứng dụng frontend: Các package không dùng đến sẽ làm tăng kích thước file JS cuối cùng, ảnh hưởng đến tốc độ tải trang và trải nghiệm người dùng.
- Khi bạn gặp lỗi xung đột dependency: Đôi khi, gỡ bỏ một package cũ kỹ có thể giải quyết được mớ bòng bong này, vì nó có thể kéo theo các phiên bản dependency cũ khác gây xung đột.
Thử nghiệm nhỏ: Hãy thử tạo một project Node.js mới, cài vài package linh tinh (ví dụ: axios, chalk, commander), rồi thử gỡ bỏ từng cái một. Quan sát sự thay đổi trong node_modules, package.json, và yarn.lock. Đó là cách tốt nhất để 'thấm' kiến thức này và hiểu rõ cơ chế hoạt động của Yarn.
Thấy chưa, 'yarn remove' không chỉ là một lệnh đơn thuần, nó là một công cụ mạnh mẽ giúp bạn duy trì một dự án Node.js 'sạch sẽ', hiệu quả và dễ bảo trì. Đừng ngại 'vứt bỏ' những thứ không cần thiết, vì đôi khi, sự tối giản lại mang lại sức mạnh lớn lao nhất trong lập trình. Chúc các bạn Gen Z 'dọn nhà' thành công!
Thuộc Series: Nodejs
Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!