Cơ bảncluster

npm là gì? Cách quản lý package trong JavaScript

8 phút đọc1 lượt xem
#npm là gì#npm javascript#npm install#package.json là gì#quản lý package javascript

npm là gì? Cách quản lý package trong JavaScript

Khi bắt đầu học JavaScript, bạn sẽ liên tục gặp một câu lệnh quen thuộc:

npm install

"npm là gì?", "Tại sao phải chạy lệnh này?" — Đây là câu hỏi mà hầu hết người mới học đều thắc mắc. Bài viết này sẽ giải thích npm từ đầu: npm là gì, tại sao cần thiết và cách sử dụng các lệnh cơ bản. Nếu bạn đã biết JavaScript là gì, đây là thời điểm hoàn hảo để tìm hiểu npm — công cụ cốt lõi của hệ sinh thái JavaScript.

npm là gì?

npm (viết tắt của Node Package Manager) là trình quản lý gói (package manager) mặc định của Node.js, đồng thời là registry (kho lưu trữ) package lớn nhất thế giới dành cho JavaScript.

npm có hai vai trò chính:

  • Công cụ dòng lệnh (CLI) — Tập hợp các lệnh để cài đặt, xóa và quản lý package trên máy tính
  • Registry package — Cơ sở dữ liệu trực tuyến chứa hơn 2 triệu package JavaScript do cộng đồng đóng góp

Hãy tưởng tượng npm như một App Store, nhưng thay vì ứng dụng điện thoại, nó chứa các thư viện code JavaScript mà bạn có thể sử dụng trong dự án của mình. npm được cài đặt tự động khi bạn cài Node.js — xem hướng dẫn chi tiết tại Cài đặt Node.js.

Tại sao lập trình viên cần npm?

Trước khi có npm, để sử dụng một thư viện JavaScript, bạn phải:

  • Truy cập website của thư viện đó để tải file
  • Thêm thủ công vào dự án bằng thẻ <script>
  • Khi có phiên bản mới, lại tải về và thay thế thủ công
  • Tự quản lý các thư viện phụ thuộc lẫn nhau (dependencies)

Với npm, toàn bộ quá trình trên được rút gọn thành một dòng lệnh:

npm install axios

Chỉ vậy thôi. npm xử lý tất cả cho bạn — bao gồm cả các thư viện mà axios phụ thuộc vào.

Cài đặt npm — Bắt đầu từ đâu?

npm được cài kèm với Node.js, vì vậy bạn không cần cài riêng. Sau khi cài Node.js, hãy kiểm tra bằng lệnh sau:

node -v   # Kiểm tra phiên bản Node.js (ví dụ: v20.11.0)
npm -v    # Kiểm tra phiên bản npm (ví dụ: 10.2.4)

Nếu thấy số phiên bản hiển thị, bạn đã sẵn sàng sử dụng npm. Nếu thấy lỗi command not found, hãy xem bài Hướng dẫn cài đặt Node.js.

Các lệnh npm cơ bản cần biết

Đây là những lệnh npm bạn sẽ dùng hàng ngày:

npm init          # Tạo file package.json (khởi tạo dự án)
npm install       # Cài tất cả package trong package.json
npm install tên-package          # Cài một package cụ thể
npm install -D tên-package       # Cài vào devDependencies
npm uninstall tên-package        # Gỡ cài đặt package
npm list                         # Xem danh sách package đã cài
npm run tên-script               # Chạy script trong package.json

npm init — Khởi tạo dự án mới

npm init      # Hỏi từng bước (tên dự án, phiên bản, mô tả...)
npm init -y   # Bỏ qua hỏi, tạo ngay với giá trị mặc định

npm install — Cài đặt package

npm install              # Cài tất cả package trong package.json
npm install axios        # Cài axios vào dependencies
npm install -D nodemon   # Cài nodemon vào devDependencies

npm uninstall — Gỡ cài đặt

npm uninstall axios   # Gỡ axios và xóa khỏi package.json

npm run — Chạy script tùy chỉnh

npm run start   # Chạy script "start"
npm run dev     # Chạy script "dev"
npm run build   # Chạy script "build"

package.json là gì? Cấu trúc và ý nghĩa

package.json là file quan trọng nhất trong dự án JavaScript. Nó chứa thông tin về dự án và danh sách tất cả package bạn đang sử dụng. File này sử dụng định dạng JSON — nên rất dễ đọc và chỉnh sửa.

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "Dự án ví dụ về npm",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "webpack --mode production",
    "test": "jest"
  },
  "dependencies": {
    "axios": "^1.6.0",
    "express": "^4.18.2"
  },
  "devDependencies": {
    "nodemon": "^3.0.1",
    "jest": "^29.7.0"
  }
}
  • name — Tên dự án (chữ thường, không có khoảng trắng)
  • version — Phiên bản hiện tại theo chuẩn Semantic Versioning
  • scripts — Các lệnh tùy chỉnh có thể chạy bằng npm run
  • dependencies — Package cần thiết khi ứng dụng chạy thực tế (production)
  • devDependencies — Package chỉ cần trong quá trình phát triển

node_modules và .gitignore — Tại sao không đưa lên Git?

Khi chạy npm install, npm tạo ra thư mục node_modules chứa toàn bộ code của các package đã cài. Thư mục này có thể lên đến hàng trăm MB và chứa hàng nghìn file.

Hãy tạo file .gitignore và thêm vào:

node_modules/
.env
dist/
build/

Lưu ý: File package-lock.json thì nên đưa lên Git để đảm bảo mọi thành viên trong team dùng cùng phiên bản package.

npm vs npx — Khác nhau thế nào?

npmnpx
Chức năng chínhQuản lý package (cài, xóa)Chạy package trực tiếp
Lưu vào máy?Có (node_modules)Không (chạy xong xóa)
Dùng khi nàoThư viện dùng nhiều lầnCLI tool dùng một lần
# npm: cài express và dùng trong project nhiều lần
npm install express

# npx: tạo project React mà không cần cài create-react-app vĩnh viễn
npx create-react-app my-app

Các package npm phổ biến nên biết

npm install axios      # Gửi HTTP request (gọi API)
npm install lodash     # Tiện ích xử lý array, object
npm install express    # Web framework cho Node.js
npm install dotenv     # Đọc biến môi trường từ file .env
npm install -D nodemon # Tự động restart server khi code thay đổi
npm install -D jest    # Framework kiểm thử (testing)
const axios = require('axios');

async function layDanhSachBaiViet() {
  const res = await axios.get('https://jsonplaceholder.typicode.com/posts');
  console.log(res.data.slice(0, 3));
}

layDanhSachBaiViet();

Tổng kết

  • npm = Node Package Manager — trình quản lý package cho JavaScript
  • npm install — cài package, npm uninstall — gỡ package
  • package.json — hồ sơ dự án, ghi lại mọi dependency
  • node_modules — không đưa lên Git, thêm vào .gitignore
  • npm vs npx — npm để quản lý, npx để chạy trực tiếp

Bước tiếp theo: Thử tự tạo một dự án nhỏ bằng cách chạy npm init -y, cài một package bạn muốn dùng và bắt đầu code! Đừng quên xem lại JavaScript là gì nếu bạn cần ôn lại kiến thức nền, hoặc xem hướng dẫn Cài đặt Node.js nếu chưa cài.

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete JavaScript Course 2024: From Zero to Expert!

Khóa học JavaScript toàn diện nhất từ cơ bản đến nâng cao.

4.7499.000 ₫
Xem khóa học →

React - The Complete Guide (incl. React Router & Redux)

Làm chủ React.js với các dự án thực tế, hooks, Redux.

4.6499.000 ₫
Xem khóa học →

Node.js, Express, MongoDB & More: The Complete Bootcamp

Backend với Node.js: REST API, authentication, MongoDB.

4.7499.000 ₫
Xem khóa học →
Quảng cáo