
Chào các "coder nhí" của anh Creyt! Hôm nay, chúng ta sẽ cùng "mổ xẻ" một khái niệm nghe thì đơn giản nhưng lại là xương sống của mọi dự án Node.js, đó là npm install. Nghe tên thôi đã thấy mùi công nghệ rồi đúng không? Đừng lo, anh Creyt sẽ biến nó thành một câu chuyện dễ hiểu như cách chúng ta "order" trà sữa vậy.
1. npm install là gì mà ghê vậy? (Giải mã khái niệm)
Này mấy đứa, tưởng tượng thế này: bạn đang muốn xây một "căn biệt thự" ứng dụng web cực xịn xò bằng Node.js. Bạn có bản thiết kế (code chính của bạn), có nền móng vững chắc. Nhưng để căn biệt thự đó có thể "sống" được, có cửa sổ xịn, có hệ thống điện thông minh, có nội thất sang chảnh, bạn đâu thể tự tay làm hết mọi thứ từ con ốc vít nhỏ nhất đúng không?
Đó chính là lúc các "nhà cung cấp nội thất" và "hệ thống thông minh" xuất hiện. Trong thế giới lập trình, chúng ta gọi chúng là thư viện (libraries) hay gói (packages). Chúng là những đoạn code đã được người khác viết sẵn, test kỹ càng và đóng gói lại để chúng ta chỉ việc "lắp ráp" vào dự án của mình.
Và npm install chính là "người vận chuyển" siêu tốc, "người đi chợ" chuyên nghiệp giúp bạn mang tất cả những "nội thất" hay "bộ phận" cần thiết đó về "căn biệt thự" của mình. Nó giúp bạn:
- Tải về các thư viện (dependencies): Khi dự án của bạn cần một chức năng nào đó (ví dụ: xử lý ngày tháng, tạo server web, kết nối database), thay vì viết lại từ đầu, bạn chỉ cần "kêu gọi" thư viện tương ứng.
npm installsẽ tải chúng từ kho lưu trữ khổng lồ của npm về máy bạn. - Quản lý các thư viện đó: Nó không chỉ tải về mà còn biết cách đặt chúng đúng chỗ, đúng phiên bản, đảm bảo chúng hoạt động "hòa thuận" với nhau.
Vậy "npm" là gì? Nó là viết tắt của Node Package Manager, hiểu nôm na là "người quản lý gói của Node.js". Nó là kho chứa khổng lồ và cũng là công cụ để bạn tương tác với kho đó.
Khi bạn chạy npm install, nó sẽ đọc file package.json (giống như "danh sách mua sắm" của bạn) để biết cần tải những gì, và sau đó tạo ra thư mục node_modules (giống như "nhà kho" chứa tất cả đồ đã mua) trong dự án của bạn.
2. Làm quen với Code: Từ lý thuyết đến thực hành
Lý thuyết nghe hay ho rồi, giờ chúng ta "nhúng tay" vào code một chút cho máu nhé!
Đầu tiên, hãy tạo một dự án Node.js mới tinh. Mở terminal/cmd và gõ:
mkdir my-awesome-app
cd my-awesome-app
npm init -y
Lệnh npm init -y sẽ tạo ra một file package.json với các thiết lập mặc định. File này trông giống như một "bản kê khai" dự án của bạn, bao gồm tên, phiên bản, mô tả, và quan trọng nhất là danh sách các thư viện cần thiết.
Giờ, chúng ta muốn "căn biệt thự" của mình có thể tạo ra một server web đơn giản, chúng ta sẽ cần thư viện express - một "người thợ xây" server rất nổi tiếng.
npm install express
Sau khi chạy lệnh này, bạn sẽ thấy vài điều kỳ diệu xảy ra:
- Thư mục
node_modulesxuất hiện: Đây là nơi chứaexpressvà tất cả các thư viện màexpresscần để hoạt động (gọi là "dependencies của dependencies"). Nó có thể trông hơi "khổng lồ" đấy! - File
package.jsonđược cập nhật: Mụcdependenciessẽ có thêm"express": "^4.18.2"(phiên bản có thể khác tùy thời điểm bạn cài đặt). - File
package-lock.jsonđược tạo/cập nhật: Đây là "biên bản ghi nhớ" chi tiết về tất cả các thư viện đã được cài đặt, bao gồm cả phiên bản chính xác và các dependencies phụ của chúng. Nó đảm bảo rằng mọi máy tính khác khi chạynpm installsẽ cài đặt chính xác các phiên bản giống hệt máy bạn.
Ví dụ về package.json sau khi cài express:
{
"name": "my-awesome-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
Cài đặt thư viện chỉ dùng trong quá trình phát triển (devDependencies):
Đôi khi, bạn cần những công cụ chỉ để "trang trí", "kiểm tra" hay "tối ưu" cho căn biệt thự của bạn trong lúc xây dựng, chứ không cần thiết khi căn biệt thự đã hoàn thiện và đi vào hoạt động. Ví dụ như nodemon để tự động khởi động lại server khi bạn thay đổi code, hoặc eslint để kiểm tra lỗi cú pháp.
npm install nodemon --save-dev
# Hoặc viết tắt:
npm i nodemon -D
Sau lệnh này, nodemon sẽ nằm trong mục devDependencies của package.json.

3. Mẹo Vặt "Ăn Tiền" Từ Anh Creyt (Best Practices)
Giờ là lúc anh Creyt chia sẻ vài "bí kíp võ công" để mấy đứa dùng npm install cho "chuẩn chỉnh" như dân chuyên nghiệp:
node_moduleslà "đống rác" của Git: Tuyệt đối KHÔNG commit thư mụcnode_moduleslên Git! Nó rất lớn và có thể gây xung đột phiên bản. Hãy thêm nó vào file.gitignorecủa bạn. Khi người khác clone dự án về, họ chỉ cần chạynpm installlà có lại toàn bộ.- Luôn commit
package.jsonvàpackage-lock.json: Hai file này là "linh hồn" của việc quản lý dependencies.package.jsoncho biết bạn cần gì,package-lock.jsoncho biết bạn đã có chính xác những gì. Commit cả hai để đảm bảo mọi thành viên trong team hoặc môi trường triển khai đều có cùng một bộ thư viện. npm civsnpm install: Khi bạn làm việc trong môi trường CI/CD (Continuous Integration/Continuous Deployment) hoặc muốn đảm bảo tuyệt đối rằng các dependencies được cài đặt chính xác như trongpackage-lock.jsonmà không có bất kỳ thay đổi nào, hãy dùngnpm ci. Nó sẽ xóanode_modulescũ và cài đặt lại hoàn toàn dựa trênpackage-lock.json. Cònnpm installthì linh hoạt hơn, có thể cập nhật phiên bản nếu có thay đổi trongpackage.jsonvà không cópackage-lock.json.- Hiểu về Versioning (
^,~):^(caret): Cho phép cập nhật lên phiên bản minor và patch mới nhất. Ví dụ:^1.2.3sẽ cho phép1.3.0,1.2.4nhưng không cho phép2.0.0.~(tilde): Chỉ cho phép cập nhật lên phiên bản patch mới nhất. Ví dụ:~1.2.3sẽ cho phép1.2.4nhưng không cho phép1.3.0.- Không có ký hiệu: Cài đặt chính xác phiên bản đó. (ít dùng).
- Lời khuyên: Dùng
^là mặc định và khá an toàn cho hầu hết các dự án. Nhưng nếu bạn cần sự ổn định tuyệt đối, hãy cân nhắc dùng phiên bản chính xác hoặc~.
4. npm install Đã Chạy Ở Đâu Rồi? (Ứng Dụng Thực Tế)
Thực ra, npm install đã "len lỏi" vào mọi ngóc ngách của thế giới phát triển web hiện đại rồi, mấy đứa không nhận ra thôi:
- Các Framework Frontend "hot hit": React, Angular, Vue.js, Svelte... Tất cả đều dùng
npm installđể kéo về hàng tá thư viện cần thiết cho việc xây dựng giao diện người dùng, từ bộ router, quản lý state cho đến các UI component. - Backend "siêu tốc" với Node.js: Express.js, NestJS, Koa.js... Các framework này dùng
npm installđể có được các module xử lý request, kết nối database, xác thực người dùng... nhanh chóng. - Công cụ Build và Bundler: Webpack, Vite, Rollup... Chúng là những "công nhân" chăm chỉ giúp đóng gói, tối ưu code của bạn trước khi triển khai. Và đương nhiên, chúng cũng được cài đặt qua
npm install. - Mọi dự án JavaScript/TypeScript: Từ các ứng dụng di động với React Native, Electron cho desktop, đến các công cụ dòng lệnh (CLI tools) bạn dùng hàng ngày, tất cả đều là "con đẻ" của
npm install.
5. Khi Nào Dùng, Dùng Thế Nào Cho Chuẩn (Hướng Dẫn Sử Dụng & Thử Nghiệm)
Vậy khi nào thì chúng ta "triệu hồi" npm install?
- Khi mới clone một dự án: Đây là lúc
npm installphát huy sức mạnh nhất. Bạn vừa "kéo" code từ Git về, chạynpm installmột phát là có đầy đủ "đồ nghề" để bắt đầu code ngay.git clone <your-repo-url> cd <your-repo-name> npm install - Khi thêm một thư viện mới: Mỗi khi bạn quyết định "trang bị" thêm một tính năng mới cho dự án bằng cách cài một thư viện, bạn sẽ dùng
npm install <package-name>.npm install axios # Để gửi HTTP requests - Khi
package.jsonthay đổi: Nếu bạn hoặc đồng đội thay đổi danh sách dependencies trongpackage.json(thêm, bớt, hoặc cập nhật phiên bản), việc chạynpm install(hoặcnpm cinếu là môi trường CI) sẽ đảm bảo mọi thứ được đồng bộ. - Gỡ bỏ thư viện không dùng nữa: Nếu bạn thấy "nội thất" nào đó không còn phù hợp, hãy "thanh lý" nó đi:
npm uninstall <package-name> - Cập nhật thư viện: Đôi khi, các thư viện có phiên bản mới với nhiều tính năng hay vá lỗi bảo mật. Bạn có thể cập nhật chúng:
npm update <package-name> # Cập nhật một gói cụ thể npm update # Cập nhật tất cả các gói theo quy tắc ^, ~
Thử nghiệm và Lời khuyên:
Hãy dành thời gian thử nghiệm với các lệnh trên. Tạo một dự án nhỏ, cài đặt vài thư viện, xóa đi, cập nhật. Quan sát sự thay đổi trong node_modules, package.json và package-lock.json. Việc "tự tay làm" sẽ giúp bạn ghi nhớ và hiểu sâu sắc hơn rất nhiều.
Nhớ nhé, npm install không chỉ là một lệnh, nó là "người bạn đồng hành" không thể thiếu trên con đường chinh phục lập trình Node.js của bạn. Nắm vững nó, bạn sẽ tự tin "xây" nên những ứng dụng "đỉnh của chóp"!
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é!