- vừa được xem lúc

[Nodejs thực chiến] Để là chuyên gia npm

0 0 61

Người đăng: Nguyễn Kỳ Thịnh

Theo Viblo Asia

Đã làm node thì ngày nào cung phải dùng npm. Việc nắm chắc npm giúp bạn quản lý dependence tốt hơn, nâng cao độ ổn định, tính bảo mật của phần mềm, cũng như hiệu suất làm việc. Sau đây mình tổng hợp một số best practices khi sử dụng npm.

1. Không tự động thay đổi version các packages.

Hãy suy nghĩ về việc dự án bạn phát triển sử dụng momentjs-x.1.4. Nhưng khi deploy tính năng này lên production version tự động tăng lên momentjs-x.1.5 và rất nhiều issue kèm theo được sinh ra. Có một số cách đảm bảo version pakages không thay đổi.

  1. Config file .npmrc:
// save this as .npmrc file on the project directory
save-exact:true
  1. Install đúng version npm install <package>@<version> --save-exact
  2. Bỏ tiền tố ^ trong file package.json
{ "name": "blogss", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "3.0.0", "moment": "^2.29.1" }
}

Trong file ví dụ thì express sẽ không tự động tăng version còn moment thì có.

2. Install packages ở production với command npm ci

Sử dụng npm ci thay vì npm i có một số tiện dụng:

  1. Nhanh hơn gấp 2 lần npm ixem thêm nguyên nhân npm blog
  2. Nếu package.jsonpackage-lock.json khác nhau sẽ tự động báo lổi. Điều này tránh trường hợp nhiều người trong dự án tự thêm package hoặc tăng version trong dự án bằng các thay đổi file pakage.json, mà không thông qua npm cli.
  3. Tự xóa follder node modules trước khi install. Điều này đảm bảo node modules là sản phẩm của package.jsonpackage-lock.json.

3. Phân biệt rõ dependencies và devDependencies trong file package.json

  • dependencies: Packages cần thiết cho ứng dụng ở production.
  • devDependencies: Packages chỉ cần thiết cho local development và testing.

Để thêm pakage và dependencies trong file package.json thực hiện command:

npm install <package-name> [--save-prod]

Để thêm pakage và devDependencies trong file package.json thực hiện command:

npm install <package-name> [--save-dev]

Có thể thực hiện bằng cách sửa file package.json một cách thủ công.

4. Không install devDependencies khi chạy production

devDependencies là các pakages chỉ sử dụng ở môi trường development hoặc testing. Việc phải install chúng ở production làm quá trình deploy trở nên chậm chạp hơn và còn làm ứng dụng trở nên nặng nề không cần thiết.

Để chắc chắc không install devDependencies, thì cần set NODE_ENV=production, install bằng command npm ci

Nếu muốn xóa devDependencies đã được install, trong trường hợp cần devDependencies trong quá trình build thì có thể remove bằng command: npm prune --production

5. Thường xuyên kiểm tra các package đang sử dụng:

  • Kiểm tra các packages bị outdated:
npm outdated [[<@scope>/]<pkg> ...]
  • Kiểm tra vấn đề bảo mật
npm audit [--json] [--production] [--audit-level=(low|moderate|high|critical)]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=(dev|prod)]
common options: [--production] [--only=(dev|prod)]

Bonus. Vì sao tôi không dùng yarn

  • Không phải vì yarn không tốt. Yarn được biết đến là install nhanh hơn và còn nhiều tính năng khác hay hơn. Không phải tự nhiêm mà repo github của yarn có 40k sao, trong khi npm cli chỉ có 5,5k sao. "yarn rất tốt nhưng tôi rất tiết!"
  • Nguyên nhân 1: Dùng yarn nhưng vẫn phải làm việc với npm. Yarn không lưu trữ các pakages, các pakages thường dùng được npm repository lưu trử, yarn chỉ đóng vai trò tải pakages về. Bạn muốn public một package thì vẫn phải tạo tài khoản npm. Một số command về quản lý package yarn không hỗ trợ. Ví dụ common remove pakage npm unpublish --force ), issue từ năm 2017.
  • Nguyên nhân 2: Dùng yarn nhưng vẫn phải cài npm
  • Nguyên nhân 3: npm đủ để dùng, vì tôi code microservices. Các service có cấu trúc ngọn nhẹ với số dependence không nhiều.

Cho mình 1 upvote để có động lực viết nhiều bài hơn nhé.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Hướng dẫn làm bot Facebook messenger cho tài khoản cá nhân

Giới thiệu. Trong bài viết trước thì mình có hướng dẫn các bạn làm chatbot facebook messenger cho fanpage. Hôm nay mình sẽ hướng dẫn các bạn tạo chatbot cho một tài khoản facebook cá nhân. Chuẩn bị.

0 0 149

- vừa được xem lúc

Crawl website sử dụng Node.js và Puppeteer - phần 2

trong phần 1 mình đã giới thiệu về puppeteer và tạo được 1 project cùng một số file đầu tiên để các bạn có thể crawl dữ liệu từ một trang web bất kỳ. Bài này mình sẽ tiếp nối bài viết trước để hoàn thiện seri này.

0 0 58

- vừa được xem lúc

Điều React luôn giữ kín trong tim

■ Mở đầu. Ngồi viết bài khi đang nghĩ vu vơ chuyện con gà hay quả trứng có trước, mình phân vân chưa biết sẽ chọn chủ đề gì để chúng ta có thể cùng nhau bàn luận.

0 0 42

- vừa được xem lúc

Gửi Mail với Nodejs và AWS SES

AWS SES. AWS SES là gì.

0 0 71

- vừa được xem lúc

Crawl website sử dụng Node.js và Puppeteer - phần 1

Bài viết này mình sẽ giới thiệu cho các bạn craw dữ liệu của web site sử dụng nodejs và Puppeteer. .

0 0 149