0

Cài đặt NodeJS và các công cụ quản lý: NPM - YARN -PNPM biết dùng cái nào giờ ??

Ở bài trước chúng ta đã nắm được Node.js là một môi trường chạy JavaScript phía server, được xây dựng trên nền tảng V8 JavaScript engine của Google Chrome. Node.js cho phép bạn xây dựng các ứng dụng mạng nhanh và có khả năng mở rộng cao.

Trong bài viết này chúng ta sẽ tập trung vào việc cài đặt Node.js như thế nào đồng thời tìm hiểu những công cụ quản lý của Node.js.

Cài đặt Node.js

image.png

  1. Tải trình cài đặt Node.js từ trang web chính thức.
  2. Chạy trình cài đặt và làm theo hướng dẫn.

Xác minh cài đặt

Mở terminal và chạy:

node -v
npm -v

Cài đặt các công cụ phát triển

  • Visual Studio Code: Một trình soạn thảo mã nguồn mạnh mẽ và phổ biến.
  • npm: Trình quản lý gói mặc định đi kèm với Node.js.

image.png

So sánh các trình quản lý gói JavaScript: npm, Yarn và pnpm

Trong thế giới JavaScript, npm, Yarn và pnpm là ba trình quản lý gói phổ biến nhất. Chúng giúp các nhà phát triển tự động hóa quá trình xuất bản, cài đặt, nâng cấp, và gỡ bỏ các phần mềm. Mặc dù có những đối thủ mới xuất hiện trong những năm gần đây như Bun và Deno, nhưng lập trình viên vẫn sử dụng ba trình quản lý gói này nhiều.

Tại sao cần trình quản lý gói?

Trình quản lý gói là công cụ giúp tối ưu hóa việc xử lý các phần mềm trong dự án. Thay vì phải tự cài đặt và quản lý các thư viện, trình quản lý gói giúp đơn giản hóa và tự động hóa quy trình này.

npm (Node Package Manager)

npm là trình quản lý gói mặc định của Node.js và có cộng đồng người dùng lớn nhất. Tuy nhiên, nó cũng có những hạn chế:

  • Cài đặt tuần tự: npm xử lý các gói theo thứ tự, khiến thời gian cài đặt kéo dài.
  • Tốn dung lượng: npm nhân bản các gói cho từng dự án, làm tăng kích thước ổ đĩa.
  • Bảo mật chưa tối ưu: Công cụ kiểm tra lỗ hổng bảo mật (npm audit) thường gặp lỗi và không có giải pháp khắc phục hiệu quả.

Yarn (được phát triển bởi Meta)

Yarn khắc phục nhiều hạn chế của npm với những tính năng như:

  • Tải xuống song song: Tăng tốc độ cài đặt các gói.
  • Chế độ offline: Hỗ trợ cài đặt mà không cần kết nối mạng.
  • Quản lý gói thông minh: Thay vì nhân bản mã nguồn, Yarn sử dụng phương pháp hoisting để lưu trữ các gói chung ở một cấp cao hơn trong cây thư mục.

Tuy nhiên, hoisting cũng mang lại một số vấn đề:

  • Có thể vô tình sử dụng một gói con mà bạn chưa cài đặt.
  • Dựa vào semver (phiên bản ngữ nghĩa), khiến bạn gặp lỗi nếu các gói không tuân thủ quy tắc này.

Để giải quyết, Yarn giới thiệu Plug'n'Play (PnP), lưu trữ tất cả các gói trong một thư mục toàn cục và sử dụng symlinks để liên kết chúng. Điều này giúp loại bỏ thư mục node_modules và tiết kiệm không gian.

Nếu bạn có 10 dự án Next.js dùng cùng một phiên bản, Yarn PnP chỉ cần cài đặt một lần trong thư mục toàn cục.

pnpm (Performant NPM)

pnpm được đánh giá là nhanh nhất trong ba trình quản lý. Nó hoạt động tương tự Yarn PnP, sử dụng symlinks, nhưng có một điểm vượt trội:

  • Cập nhật thông minh: pnpm chỉ tải xuống các thay đổi trong phiên bản mới, thay vì toàn bộ gói.

Hãy tưởng tượng bạn đang xây dựng một ngôi nhà (dự án). pnpm giống như một hệ thống tái chế vật liệu xây dựng, giúp bạn tiết kiệm không gian và chi phí bằng cách tái sử dụng các vật liệu đã có.

Nếu bắt đầu một dự án mới hôm nay, tôi sẽ chọn pnpm. Với tôi, pnpm > yarn > npm.

Những lựa chọn khác: Bun và Deno

Ngoài ba trình quản lý gói trên, còn có các tùy chọn như Bun và Deno. Tuy nhiên, chúng không chỉ là trình quản lý gói mà còn cung cấp runtime để biên dịch và chạy JavaScript hoặc TypeScript.

  • Bun: Nhanh hơn pnpm tới 100 lần, lý tưởng cho các dự án yêu cầu tốc độ.
  • Deno: Một đối thủ mới, hướng đến cải tiến hệ sinh thái Node.js.

Cài đặt Yarn

image.png Yarn là một trình quản lý gói khác cho Node.js, cung cấp hiệu suất tốt hơn và các tính năng bổ sung so với npm. Cài đặt Yarn bằng cách chạy:

npm install -g yarn

Xác minh cài đặt:

yarn -v

Ưu điểm của Yarn

  • Hiệu suất cao: Yarn cài đặt các gói song song, giúp tiết kiệm thời gian.
  • Kiểm tra tính toàn vẹn: Yarn kiểm tra tính toàn vẹn của các gói để đảm bảo không có sự thay đổi không mong muốn.
  • Cấu trúc khóa gói: Yarn sử dụng file yarn.lock để đảm bảo các gói được cài đặt nhất quán trên các máy khác nhau.

Nhược điểm của Yarn

  • Cộng đồng nhỏ hơn npm: Mặc dù Yarn có nhiều tính năng tốt, cộng đồng của nó vẫn nhỏ hơn so với npm.
  • Cần học thêm: Nếu bạn đã quen với npm, việc chuyển sang Yarn có thể cần một chút thời gian để làm quen.

Hãy tưởng tượng bạn đang xây dựng một ngôi nhà (dự án). npm giống như một chiếc xe tải chở vật liệu xây dựng, nó làm việc tốt nhưng đôi khi có thể chậm. Yarn giống như một chiếc xe tải nhanh hơn và có thể chở nhiều vật liệu cùng lúc, giúp bạn xây nhà nhanh hơn.

Cài đặt pnpm

image.png pnpm là một trình quản lý gói khác, nổi bật với việc sử dụng không gian đĩa hiệu quả hơn. Cài đặt pnpm bằng cách chạy:

npm install -g pnpm

Xác minh cài đặt:

pnpm -v

Ưu điểm của pnpm

  • Tiết kiệm không gian đĩa: pnpm chia sẻ các gói giữa các dự án, giúp tiết kiệm không gian đĩa.
  • Hiệu suất cao: pnpm cài đặt các gói nhanh chóng và hiệu quả.
  • Cấu trúc khóa gói: pnpm sử dụng file pnpm-lock.yaml để đảm bảo các gói được cài đặt nhất quán.

Nhược điểm của pnpm

  • Cộng đồng nhỏ hơn npm và Yarn: pnpm vẫn đang phát triển và có cộng đồng nhỏ hơn.
  • Cần học thêm: Nếu bạn đã quen với npm hoặc Yarn, việc chuyển sang pnpm có thể cần một chút thời gian để làm quen.

Hãy tưởng tượng bạn đang xây dựng một ngôi nhà (dự án). pnpm giống như một hệ thống tái chế vật liệu xây dựng, giúp bạn tiết kiệm không gian và chi phí bằng cách tái sử dụng các vật liệu đã có.

Cài đặt nvm

nvm (Node Version Manager) cho phép bạn cài đặt và quản lý nhiều phiên bản Node.js trên cùng một máy. Điều này rất hữu ích khi bạn cần làm việc trên nhiều dự án yêu cầu các phiên bản Node.js khác nhau.

Cài đặt nvm

Cài đặt nvm theo hướng dẫn trên GitHub nvm:

  1. Mở terminal và chạy lệnh sau:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  1. Thêm nvm vào shell profile của bạn (ví dụ: .bashrc, .zshrc):
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Khởi động lại terminal hoặc chạy lệnh sau để tải lại profile:
source ~/.bashrc

Sử dụng nvm

Sau khi cài đặt, bạn có thể cài đặt và sử dụng các phiên bản Node.js khác nhau:

  • Cài đặt phiên bản Node.js mới nhất:
nvm install node
  • Cài đặt một phiên bản cụ thể của Node.js:
nvm install 14.17.0
  • Chuyển đổi giữa các phiên bản Node.js:
nvm use 14.17.0
  • Liệt kê các phiên bản Node.js đã cài đặt:
nvm ls

Ưu điểm của nvm

  • Quản lý nhiều phiên bản Node.js: Dễ dàng chuyển đổi giữa các phiên bản Node.js khác nhau.
  • Tiện lợi cho phát triển: Hữu ích khi làm việc trên nhiều dự án yêu cầu các phiên bản Node.js khác nhau.

Nhược điểm của nvm

  • Cài đặt phức tạp hơn: Việc cài đặt và sử dụng nvm có thể phức tạp hơn đối với người mới bắt đầu.
  • Không hỗ trợ Windows trực tiếp: nvm không hỗ trợ Windows trực tiếp, bạn cần sử dụng nvm-windows thay thế.

Hãy tưởng tượng bạn là một đầu bếp và bạn cần sử dụng các công thức nấu ăn (phiên bản Node.js) khác nhau cho các món ăn khác nhau. nvm giống như một cuốn sách nấu ăn, giúp bạn dễ dàng chuyển đổi giữa các công thức nấu ăn mà không cần phải nhớ tất cả.

Thiết lập biến môi trường

  1. Tạo file .env trong thư mục gốc của dự án.
  2. Thêm các biến môi trường theo định dạng KEY=VALUE.
  3. Sử dụng gói dotenv để tải các biến này vào ứng dụng của bạn.

Ví dụ về file .env

DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3

Sử dụng gói dotenv

Cài đặt gói dotenv:

npm install dotenv

Sử dụng dotenv trong mã nguồn của bạn:

require('dotenv').config();

console.log(process.env.DB_HOST); // localhost
console.log(process.env.DB_USER); // root
console.log(process.env.DB_PASS); // s1mpl3

Khắc phục các vấn đề cài đặt thường gặp

  1. Node.js không được nhận diện là lệnh nội bộ hoặc bên ngoài:
    • Đảm bảo Node.js đã được thêm vào PATH của hệ thống.
  2. Lỗi quyền trong quá trình cài đặt:
    • Chạy trình cài đặt với quyền quản trị viên.
  3. Lệnh npm không tìm thấy:
    • Đảm bảo npm được cài đặt đúng cách cùng với Node.js.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí