Yarn vs Npm. Ai là nhà vô địch?

Bài viết dựa vào các thống kê do tác giả thực hiện và đánh giá chủ quan theo các thống kê thực hiện. Không gây war dưới mọi hình thức nhé 2 trường phái  😀

NPM(Node Package Manger) và Yarn đều là công cụ quản lý node package cho phép nhà phát triển khởi tạo ứng dụng node, sử dụng cũng như tái sử dụng các package trên khắp thế giới. Yarn ra đợi muộn hơn được hình thành bởi các lập trình viên từ Facebook, Google, Exponent và Tilde. Nên nếu so sánh về lượng đóng góp trên github thì đơn giản sẽ thấy npm vẫn chiếm ưu thế về lượng người dùng và lượng người tham gia đóng góp. Nhưng bạn sẽ bất ngờ về lượng người Star trên github một con số khủng nếu so sánh về thời gian ra mắt của Yarn so với NPM.

Untitled

Cách cài đặt Yarn: Có 2 cách cài đặt Yarn đó là sử dụng npm hoặc cài đặt từ file cài đặt:

  • Cách 1: Gõ lệnh trong cmd với điều kiện bạn đã cài đặt Node và NPM nhé:

    npm install yarn –global

  • Cách 2: Truy cập vào trang chủ của Yarn theo đường dẫn: Yarn Installation và chọn hệ điệu hành bạn đang xài sau đó nhấn Download và tiến hành cài đặt như bình thường. Bạn nhớ là phải cài Node.js rồi nhé 😀

Tiến hành so sánh hiệu năng của NPM và Yarn:

  • Cài đặt ExpressJS thông qua 2 công cụ quản lý là NPM và Yarn ta thu được kết quả như sau: Phía trên sử dụng npm, phía dưới sử dụng yarn có cache rồi mà tốc độcủa npm vẫn gần gấp đôi yarn
    • Untitled1
  • So sánh các câu lệnh:

    #Khởi tạo một dự án nodejs mới
    npm init === yarn init

    #Cài đặt tất cả các dependencies của dự án
    npm install === yarn or yarn install

    #Thêm 1 dependency mới, ghi chú thêm –save để thêm vào file package.json đối với npm
    npm install [package] === yarn add [package]

    #Thêm package vào package.json ngay lập tức.
    npm install [package]@[version] === yarn add [package]@[version]
    npm install [package]@[tag] === yarn add [package]@[tag]

    #Thêm 1  dev dependency
    npm install [package] –save-dev === yarn add [package] –dev

    #Nâng cấp một dependency
    npm update [package] === yarn upgrade [package]
    npm update [package]@[version] === yarn upgrade [package]@[version]
    npm update [package]@[tag] === yarn upgrade [package]@[tag]

    #Xóa một dependency khỏi dự án
    npm uninstall [package] === yarn remove [package]

    #Xem thông tin registry của package
    npm view [package] === yarn info [package]

    #Liệt kê danh sách các packages đã được cài đặt
    npm list === yarn list
    npm list –depth === yarn list –depth=0

    #Cài đặt packages toàn cục có thể xài ở bất kỳ dự án nào
    npm install -g [package] === yarn global addb [package]

    #Chạy một package script
    npm run [script] === yarn run [script]

    #Start file js được định nghĩa ví dụ app.js hoặc index.js
    npm start === yarn start

     

  • Theo quan điểm của mình vì Yarn cài song song các package thay vì chờ package trước cài xong mới tới package sau như npm nên tốc độ của nó nhanh đáng kể. Mà đối với lập trình viên nhanh là một yếu tố quan trọng cho sự “lười” surrender hehe
  • Tiếp theo là 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ủ). Các bạn có thể thấy tập tin yarn lock khi tiếp hành khởi tạo một dự án node thông qua yarn
  • Các tính năng tuyệt vời khác 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
  • Nhược điểm của Yarn so với NPM là Yarn lại sử dụng Facebook’s npm registry mirror nên khi làm việc với file lock thì sẽ gửi thông tin sử dụng package về với Facebook điều này đôi khi làm khó chịu đối với những dự án đảm bảo tính riêng tư.

Trên đây là những đánh giá, nhận định mang tính của quan của mình về NPM và Yarn. Nhìn sơ qua thì có vẻ nhưng mình đang dùng Yarn nên đánh giá Yarn nhỉn hơn so với NPM về mặt tốc độ. Nhưng trăm hay không bằng tay quen mà, bạn nào sử dụng quen NPM thì vẫn tiếp tục sử dụng và thử chuyển sang Yarn trong những demo nhỏ nhỏ đánh giá hiệu suất ra sao rồi quyết định dùng NPM hay Yarn vẫn chưa muộn mà. Chúc các bạn thành công và cảm ơn mọi người đã đọc bài viết này!

Advertisements