Bài viết được sự cho phép của tác giả Kien Dang Chung
Trong thế giới mã nguồn mở, việc quản lý các gói phần mềm trong một dự án là rất cần thiết do các gói phần mềm dự án, các gói liên quan đến gói được cài đặt có thể thay đổi hoặc bạn cần cập nhật một phiên bản phù hợp. Công việc này nếu không có các công cụ quản lý gói phần mềm (package manager) thì rất đáng sợ do bạn thường xuyên phải vào nơi cung cấp các gói phần mềm kiểm tra xem có phiên bản mới không, tải về và cập nhật chúng vào dự án. Một dự án có thể sử dụng đến hàng trăm các gói phần mềm nguồn mở này, vậy quản lý chúng như thế nào? Đừng lo đã có các công cụ như yarn, npm…
Công cụ Quản lý gói phần mềm – câu trả lời cho Yarn là cái gì?
Yarn là công cụ quản lý gói phần mềm nguồn mở cho dự án của bạn, nó ngoài việc cho bạn sử dụng các gói phần mềm còn cho phép bạn chia sẻ các gói phần mềm do bạn viết với các lập trình viên trên toàn cầu. Yarn thực hiện các công việc với tốc độ rất nhanh, bảo mật cao và đáng tin cậy. Code được chia sẻ thường được gọi là package (gói phần mềm) hoặc module (mô đun phần mềm). Tất cả các gói được sử dụng sẽ được mô tả trong file package.json nằm trong thư mục gốc của dự án. Như vậy chúng ta đã có được câu trả lời Yarn là gì?
Cài đặt Yarn
Môi trường Windows
Có ba lựa chọn cài đặt trên Windows:
Cài đặt thông qua bộ cài
Tải bộ cài Yarn và thực hiện cài đặt, đây là một file thực thi trên Windows có phần mở rộng là .msi. Tuy nhiên, trước hết bạn cần cài đặt Node.js.
Cài đặt thông qua npm
Nếu bạn đã cài đặt npm và muốn chuyển sang yarn thì đơn giản hơn hết là bạn cài đặt yarn thông qua npm như sau:
npm install yarn --global
Cài đặt thông qua các package manager cho Windows như Scoop, Chocolatey
Trước tiên cần cài đặt Scoop hoặc Chocolatey là các công cụ quản lý gói phần mềm trên Windows. Sau đó thực hiện cài đặt Yarn:
scoop install yarn
Hoặc
choco install yarn
Chú ý, cần cài đặt Node trước tiên.
Môi trường Linux
Với hệ điều hành Debian / Ubutu:
Cấu hình repository:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
Sau đó thực hiện cài đặt yarn
sudo apt-get update && sudo apt-get install yarn
Với các hệ điều hành CentOS / Fedora / RHEL:
Các hệ điều hành này cài đặt thông qua RPM package repository:
sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
Nếu đã cài đặt Node.js trên máy, bạn cần cấu hình Nodesource repository:
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
Sau đó thực hiện cài đặt yarn:
sudo yum install yarn
Môi trường MacOS
Cài đặt thông qua Homebrew là một package manager:
brew install yarn
Nó tự động cài đặt Node nếu máy bạn chưa cài.
Yarn và npm dùng cái nào?
npm là công cụ quản lý gói phần mềm mặc định cho Node.js còn Yarn là giải pháp quản lý gói phần mềm được Facebook phát triển riêng. Tiếp theo, chúng ta cùng so sánh một số tính năng khác biệt giữa yarn và npm giúp bạn có được sự lựa chọn tốt nhất.
File yarn.lock
Trong file package.json cả npm và yarn đều dựa vào file cấu hình này thực hiện theo vết các gói phụ thuộc trong dự án, phiên bản các gói không phải lúc nào cũng chính xác. Thay vào đó, thường xác định một khoảng các phiên bản cho phép, bằng cách này cho phép chọn một phiên bản cụ thể nhưng khi cài đặt npm thường chọn phiên bản mới nhất để khắc phục các lỗi phiên bản trước đó. Về lý thuyết, các phiên bản mới sẽ không phá vỡ các kiến trúc trong phiên bản cũ, nhưng thực tế không phải lúc nào cũng vậy. Sử dụng npm để quản lý gói phần mềm có thể dẫn đến trường hợp hai máy có cùng một file cấu hình package.json nhưng lại có các phiên bản của các gói khác nhau và nảy sinh các lỗi “bug on my machine”. Để tránh việc phiên bản không trùng khớp, một phiên bản chính xác sẽ được đưa vào trong file lock để quản lý. Mỗi khi một module được thêm vào, yarn sẽ tạo ra (nếu chưa có) hoặc cập nhật file lock. Bằngản cách này, yarn đảm bảo các máy khác nhau sẽ có cùng phiên bản chính xác trong khi vẫn có một loạt các phiên bản cho phép được định nghĩa trong file package.json. Ý tưởng này cũng giống như composer.lock được sử dụng trong Composer, công cụ quản lý gói phần mềm cho PHP. Với npm, lệnh npm shrinkwrap cũng tạo ra một tập tin lock và npm install sẽ đọc tập tin lock này trước khi đọc đến package.json, nó giống với cách yarn thực hiện bằng yarn.lock. Sự khác biệt ở đây là yarn luôn luôn tạo ra và cập nhật yarn.lock trong khi npm chỉ làm việc này khi thực hiện npm shrinkwrap hoặc tồn tại file npm-shrinkwrap.json.
Yarn cài đặt các gói song song
Khi npm và yarn cài đặt một gói phần mềm, có rất nhiều các tác vụ cần thực hiện, với npm các tác vụ này được thực hiện tuần tự, điều đó có nghĩa là npm sẽ đợi cho gói này được cài đặt xong đầy đủ mới tiếp tục cài đặt các gói khác. Yarn thì khác, nó xử lý các tác vụ song song, giúp tăng hiệu năng quá trình hoạt động. Để kiểm tra, tôi thực hiện cài đặt gói express sử dụng cả npm và yarn mà không sử dụng shrinkwrap hoặc yarn.lock và không có cache dữ liệu. Với yarn việc cài đặt mất 5.34s, còn npm hết 14s. Đây chỉ là một thử nghiệm với một gói, nếu dự án của bạn có hàng trăm gói, thực sự có một sự khác biệt lớn về thời gian cài đặt. ### Hiển thị thông tin cài đặt
Khi thực hiện cài đặt các gói bằng yarn, màn hình hiển thị các thông tin một cách rút gọn, các thông tin chi tiết về gói cài đặt có thể thực hiện thông qua lệnh khác. Trong khi đó npm đệ quy qua các phụ thuộc và in ra màn hình thông tin quá nhiều.
Yarn – npm bạn chọn cái nào?
Một thực tế trong quá trình phát triển ứng dụng của Facebook, npm đã đáp ứng rất tốt trong giai đoạn đầu, nhưng khi codebase và số lập trình viên phình ra nhanh chóng, xuất hiện những vấn đề về sự nhất quán, bảo mật và hiệu năng. Để giải quyết các vấn đề này, Facebook đã tự xây dựng một giải pháp cho riêng mình, và yarn ra đời. Với Yarn, các lập trình viên vẫn có thể truy xuất vào danh sách các gói được đăng ký cho npm. Thực tế sử dụng cho thấy, Yarn có rất nhiều ưu điểm, tuy nhiên cũng có những nhược điểm như do là lính mới trong lĩnh vực package manager nên Yarn còn tồn tại khá nhiều lỗi, nhưng cũng không có gì đáng lo khi cộng đồng sử dụng Yarn đang lớn dần, mọi lỗi gặp phải bạn có thể tìm kiếm trên Google hoặc vào phần Issue cùa Yarn trên Github, có rất nhiều các issue được đưa ra. Yarn tuy là một đứa trẻ trong lĩnh vực quản lý thư viện lập trình, nhưng nó đã nhanh chóng sửa đổi những gì thiếu sót từ những đàn anh đi trước, và một ngày không xa, yarn thực sự sẽ thay thế dần cho npm.
Bài viết gốc được đăng tải tại allaravel.com
Có thể bạn quan tâm:
- Bí kiếp học front-end của Grab – Phần 3
- Cách để npm packages chạy trong browser
- Tại sao nên dùng [SerializeField] thay vì biến public?
Xem thêm các việc làm Developer hấp dẫn tại TopDev