Update Package

nâng cấp, nâng cấp theo ngày tháng, cho công nghệ của bạn lên đỉnh mọi phút giây ...

Ghi chép này giúp các bạn trả lời những câu hỏi tại sao lại có các dấu " ^ " dấu " ~ " trong file package.json của các bạn, từ đó sẽ có 1 cái nhìn sâu sắc hơn vì đã hiểu rõ ý nghĩa nhưng râu ria đầy nguy hiểm này.

Bắt đầu nào, để update package, các bạn sử dụng cú pháp:

$ npm update [tên_package]

Nhưng các bạn phải chú ý, việc update đến version nào còn phụ thuộc vào một điểm nữa mà mình chưa nhắc tới ở phần #giới thiệu về package version, đó là kí hiệu ở trước version.

Có 2 kí hiệu tiền tố phổ biến nhất đó là dấu ^ và dấu ~

Khi bạn cài đặt package thì mặc định tiền tố sẽ là dấu ^

"dependencies": {
   "react": "^16.17.0",
}

Với tiền tố ^. Khi update, bạn sẽ được update đến bản minor mới nhất. ( chưa biết về bản minor là gì, bấm vào đây => #Package Version - minor )

Lấy ví dụ package ở trên, khi ta update package react sẽ được update tới version mới nhất dạng 16.x.x trong đó 16.0.0 <= 16.x.x < 17.0.0

Như có thể thấy, version mới nhất mà bạn có thể cập nhật được nếu sử dụng ^ là version 16.14.0, vì nó là bản minor mới nhất hiện có và thỏa mãn 16.0.0 < 16.14.0 < 17.0.0.

Tuy nhiên, nếu chúng ta thay đổi kí tự ^ thành ~ thì sẽ khác:

"dependencies": {
   "react": "~16.17.0",
}

Khi chạy lệnh npm outdated sẽ cho ra kết quả:

Sử dụng kí tự ~ có nghĩa là khi update, bạn sẽ được update đến bản vá lỗi mới nhất. Trong ví dụ package ở trên, khi ta update package slugify, nó sẽ được update tới version với dạng 16.14.x trong đó 16.14.0 <= 16.14.x < 17.0.0 , vậy version mới nhất mà thỏa mãn điều kiện trên là version 16.14.0

Ngoài 2 kí hiệu đó ra, còn có 1 số kí hiệu khác, tuy nhiên không phổ biến bằng, có thể kể đến như:

[version]: giữ nguyên version hiện tại kể cả khi update

>[version]: version sau khi update phải > version hiện tại

*[version]: update đến version mới nhất không có ràng buộc gì.

>= [version]: version sau khi update phải >= version hiện tại

Bạn có thể xem thêm tại đây:

https://docs.npmjs.com/files/package.json

Chú ý là sau khi update, kí hiệu tiền tố sẽ trở về mặc định đó là kí tự ^. Các bạn nên cân nhắc sử dụng kí tự tiền tố là ~ .

Last updated