Sự khác biệt chính giữa gói cục bộ và gói toàn cầu là:
- gói địa phương được cài đặt trong thư mục nơi bạn chạy
npm install <package-name>
và chúng được đưa vàonode_modules
thư mục dưới thư mục này - gói toàn cầu tất cả đều được đặt ở một nơi duy nhất trong hệ thống của bạn (chính xác nơi phụ thuộc vào thiết lập của bạn), bất kể bạn chạy ở đâu
npm install -g <package-name>
Trong mã của bạn, bạn chỉ có thể yêu cầu các gói cục bộ:
JS
require('package-name')
vậy khi nào bạn nên cài đặt theo cách này hay cách khác?
Nói chung, tất cả các gói phải được cài đặt cục bộ.
Điều này đảm bảo rằng bạn có thể có hàng tá ứng dụng trong máy tính của mình, tất cả đều chạy một phiên bản khác nhau của mỗi gói nếu cần.
Cập nhật gói toàn cầu sẽ làm cho tất cả các dự án của bạn sử dụng bản phát hành mới và như bạn có thể tưởng tượng, điều này có thể gây ra ác mộng về mặt bảo trì, vì một số gói có thể phá vỡ khả năng tương thích với các phụ thuộc khác, v.v.
Tất cả các dự án đều có gói phiên bản cục bộ của riêng chúng, ngay cả khi điều này có vẻ như lãng phí tài nguyên, thì điều đó là rất nhỏ so với những hậu quả tiêu cực có thể xảy ra.
Một gói nên được cài đặt trên toàn cầu khi nó cung cấp một lệnh thực thi mà bạn chạy từ shell (CLI) và nó được sử dụng lại trên các dự án.
Bạn cũng có thể cài đặt cục bộ các lệnh thực thi và chạy chúng bằng npx, nhưng một số gói chỉ được cài đặt tốt hơn trên toàn cầu.
Các ví dụ tuyệt vời về các gói toàn cầu phổ biến mà bạn có thể biết là
npm
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
Bạn có thể đã cài đặt một số gói trên toàn cầu trên hệ thống của mình. Bạn có thể nhìn thấy chúng bằng cách chạy
BASH
npm list -g --depth 0
trên dòng lệnh của bạn.