Đã làm node thì npm là thứ chúng ta cần phải nắm chắc để quản lý dependence tốt hơn, giúp dự án ổn định, tính bảo mật cũng như hiệu suất làm việc. Sau khi đọc và tổng hợp từ nhiều nguồn thì túm cái váy lại như sau.
Không tự động thay đổi version các packages.
Ví dụ đơn giản là dự án ở môi trường local thì đang sử dụng package có version khác với trên môi trường product và tất nhiên việc này có thể gây ra vô số lỗi không mong muốn.
Một số cách sau đây đảm bảo version không bị thay đổi.
1. Config file .npmrc
// tạo file tên .npmrc ở trong thư mục gốc của dự án save-exact:true
2. Install đúng version mong muốn của package
npm install <package>@<version> --save-exact
3. Bỏ đi 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 ví dụ trên thì express sẽ không tự tăng version khi npm install còn moment thì sẽ tự động tăng version.
Install packages ở production với command: npm ci
Nếu package.json khác package-lock.json sẽ tự động báo lỗi. 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ách thay đổi file package.json mà không thông qua npm cli
Khi sử dụng npm ci thì sẽ tự xóa folder node_module trước khi install. Điều này đảm bảo node_modules là sản phẩm của package.json và package-lock.json
Phân biệt dependencies và devDependencies trong file package.json
- dependencies: chứa khai báo các packages cần thiết cho ứng dụng ở production.
- devDependencies: chưa khai báo các packages chỉ cho môi trường local development và testing.
Để thêm package vào dependencies trong package.json thực hiện lệnh sau:
npm install <package-name> [--save-prod]
—save-prod là tùy chọn, mặc định không có sẽ vẫn là thêm vào dependencies
Để thêm package vào devDependencies trong file package.json thực hiện lệnh sau:
npm install <package-name> --save-dev
Không install devDependencies khi chạy môi trường production
devDependencies là các package chỉ chạy ở môi trường development hoặc testing. Khi chạy môi trường prod mà phải install sẽ mất thời gian cài đặt không cần thiết cũng như tốn không gian lưu trữ.
Để chắc chắn không install devDependencies thì cần set NODE_ENV=production và thực hiện install bằng câu lệnh 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 lệnh: npm prune —production
Bài viết này mình có tham khảo từ viblo của tác giả Nguyễn Kỳ Thịnh. Link