admin
  •  admin
  • Administration Topic Starter
2023-04-28T08:20:18Z
YARN LÀ GÌ
YARN là công cụ quản lý thư viện javascript mã nguồn mở tốc độ cao, tin cậy và bảo mật nhằm thay thế NPM (Node Package Management). Được hình thành bởi các kỹ sư Facebook, Google, Exponent và Tilde, và đã được sử dụng thực tế mức Production tại các công ty trên.

Trang chủ: https://yarnpkg.com/ 
Github: https://github.com/yarnpkg/yarn 

Đây là dự án bắt đầu được viết từ tháng 1/2016, sau quãng thời gian thử nghiệm và hoàn thiện đã được mở ra thành mã nguồn mở, và thật không có gì ngạc nhiên khi với những tính năng nổi trội vượt bậc đã có 10.000 stars chỉ trong 1 ngày tại Github. Chứng tỏ sự thành công và là tín hiệu thay thế rõ ràng NPM.

ĐẶC TRƯNG CỦA YARN
  • Tốc độ: YARN sẽ tạo cache cho tất cả các gói đã được tải về, và tải đồng thời nhiều gói cùng lúc nên tốc độ download rất nhanh.
  • Tin cậy: sử dụng tập tin lock (tương tự composer) với format chi tiết nhưng ngắn gọn, đảm bảo tính nhất quán khi cài đặt các gói giữa các hệ thống (ví dụ máy dev và máy chủ)
  • Bảo mật: sử dụng checksum để đảm bảo tính nguyên vẹn của code trước khi nó được thực thi.


Sau khi thử nghiệm thì mình thấy quả thật tốc độ quá tốt, nhất là đối với những bạn sử dụng React Native mà bị lỗi 4968 (lỗi này thường phải xóa thư mục node_modules và cài lại) thì giống như địa ngục vậy, thường mất hơn 5 phút :((. Thật ra thì npm cũng có cache, nhưng kiến trúc, cách thức của 2 bên khác nhau và YARN nổi trội hơn.

TÍNH NĂNG CỦA YARN
  • Offline mode: khi đã tải về, YARN sẽ cache lại và khi có thể cài đặt lại không cần internet.
  • Deterministic: các gói thư viện sẽ được cài đặt nhất quán cho dù thứ tự cài đặt khác nhau cho tất cả các máy
  • Network Performance: sử dụng hiệu quả hàng đợi các request và tránh waterfall các request để tối ưu tốc độ mạng.
  • Multiple Registries: cài đặt các gói từ các registries như Bower hay NPM đều đảm bảo workflow giống nhau.
  • Network Resilience: nếu một request bị fail thì nó không làm cho tiến trình bị dừng lại, khác với npm là nếu npm bị lỗi thì bị dừng lại., không những vậy mà còn có khả năng cố gắng thử lại.
  • Flat Mode: giải quyết việc không đồng nhất phiên bản của các gói thành 1 gói để tránh tạo trùng lặp


CÀI ĐẶT
Cài đặt thì các bạn xem ở đây , được ghi rõ cho từng dòng MacOS, Window, Linux.

HƯỚNG DẪN SỬ DỤNG
Cách sử dụng tương đối đơn giản như npm

Tạo dự án mới
yarn init

Để cài đặt các package, sử dụng lệnh
yarn
hoặc
yarn install

Thêm một dependency mới trong Yarn rất đơn giản và dễ dàng:
yarn add [package-name]
hoặc nếu bạn muốn một package với version cụ thể, bạn có thể làm như sau:
yarn add [package-name]@[version-or-tag]

Với dev dependencies, peer dependencies and optional dependencies bạn thêm các --dev --peer --optional tương ứng.
Ví dụ:
yarn add gulp --dev
Lệnh trên sẽ lưu gulp bên dưới thư mục devDependencies.

Để nâng cấp hay xóa các package, bạn chỉ cần thay thế lệnh add bằng upgrade hoặc remove theo sau là tên package:
# cập nhật gulp lên version 4.0
yarn upgrade gulp@4.0

# xóa gulp package
yarn remove gulp

Để biết thêm về những lệnh khác trong Yarn, bạn có thể tham khảo tại đây .

Yarn lock file
Mỗi khi cài đặt, nâng cấp hay xóa các package, yarn sẽ update file yarn.lock để theo dõi chính xác version của các package đã được cài đặt trong thư mục node_modules.

Kết luận
Qua một vài so sánh cũng như tính năng của Yarn như đã kể ở trên, chắc hẳn bạn đã thấy được sự cải tiến của Yarn so với những công cụ quản lý package trước đó phải không nào. Vậy thì còn chần chừ gì nữa, hãy cài thử nó và trải nghiệm nào.