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

Bạn có thực sự hiểu NPM dependencies?

0 0 14

Người đăng: Hoang Long

Theo Viblo Asia

Bạn đang viết một mobile/web app, bạn có một bộ component và muốn đóng gói nó lại thành một library và publish lên npm cho cộng đồng sử dụng...

Vậy thì liệu bạn có biết...

  • File yarn.lock của bạn sẽ bị bỏ qua khi người khác install library?
  • Bạn có biết điều đó nghĩa là mọi testsuit bạn chạy ok trên máy bạn nhưng lại hoàn toàn có thể lỗi trên máy người dùng trừ khi bạn không sử dụng đánh số phiên bản như ^1.0.0 và chỉ hardcode nó thành 1.0.0?
  • Bạn có nhận ra rằng mặc định của ^1.0.0 tự động nhận được các update minor version, nhưng chúng có thể là những thay đổi khá đáng kể, thậm chí là vài breaking change?
  • Bạn có biết rằng các thư viện lớn hơn như @material-ui/core thường không muốn thay đổi major version, nên một số thay đổi lớn có thể được cập nhật qua minor version?
  • Bạn có biết nếu bạn chạy yarn upgrade, nó có thể cập nhật những gì có trong file yarn.lock của bạn nhưng sẽ bỏ qua package.json?
  • Bạn có nhận ra rằng điều này có nghĩa là nếu bạn phụ thuộc vào kết quả của việc chạy yarn upgrade, thì nó có thể sẽ ship bugs đến tận tay người dùng library của bạn?

Trên đây chỉ là vài thứ bạn nên để ý, bạn hoàn toàn có thể chấp nhận rủi ro từ việc update minor version và tiếp tục sử dụng, nhưng nó có thể giải thích cho việc người dùng library của bạn gặp vài vấn đề (nếu có).

Fun fact: Nếu bạn có một phiên bản ^1.0.0 trong package.json của mình, bạn update nó lên thì trong lockfile nó sẽ hiện là 1.1.0 nhưng sau đó bạn cài đặt một thư viện khác yêu cầu phiên bản 1.0.1 (hard code), thì yarn sẽ quyết định downgrade bạn xuống 1.0.1 (và sẽ không có trùng lặp trong yarn.lock, chỉ đơn giản là phiên bản 1.1.0 ở trong yarn.lock sẽ bị downgrade xuống 1.0.1)

https://vir.vn/ban-co-thuc-su-hieu-npm-dependencies/ https://cmdcolin.github.io/archives

Bình luận

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

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

Tạo vue component library và publish nó lên npm trong 5 phút

Mở đầu. Chào các bạn, từ trước đến giờ mỗi khi code chức năng gì đó chắc hẳn việc đầu tiên mình đều nghĩ đến có thư viện nào hỗ trợ việc đó không và lao ngay lên https://www.npmjs.com search thử.

0 0 26

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

Hiểu rõ về node package manager - NPM

Node package manager hay còn gọi là NPM, là một kho lưu trữ các libs, packages của hệ sinh thái node js; cũng giống như các kho lưu trữ khác: NuGet của .Net, Composer của PHP, Maven của java, Pip của

0 0 24

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

Tôi viết cái package @ltv/env như thế nào

@(BLOG)[nodejs, env, vi, package, npm]. Tổng quan.

0 0 19

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

Hướng dẫn người dùng ngay trên chính website của bạn với vue-tour

Mở đầu. Khi phát triển một ứng dụng website thì có rất nhiều thứ chúng ta cần quan tâm tới như ngôn ngữ, công nghệ, logic, performance, .

0 0 17

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

NPM, Yarn và Javascript

Hiện nay, thị trường phát triển web application ngày càng trở nên phổ biến do có những ngôn ngữ web phát triển rất mạnh mẽ như: javascript (nodejs), php (laravel, cakephp), ruby (ruby on rails),... Ở

0 0 33

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

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

Đã 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.

0 0 61