Yarn và Npm là gì? Chúng có gì khác biệt nhau?

25/03/2023 - lượt xem
Chia sẻ
 
5/5 - (1 bình chọn)

Yarn và Npm chắc chắn sẽ không còn xa lạ với bất kì lập trình viên Javascript nào. Tuy vậy với những bạn mới học hoặc chưa từng làm việc với Node.js thì có lẽ khá bỡ ngỡ. Cũng như các bạn mình khi mới học cũng thắc mắc không hiểu sao có Yarn rồi còn Npm? 2 cái này khác gì nhau? Và khi nào thì nên dùng?

Trong bài viết này CodeTuTam sẽ cùng bạn đi tìm hiểu kỹ thêm về Yarn và Npm nhé.

Giới thiệu về yarn và npm

Npm là gì?

Npm (Node Package Manager) là một công cụ quản lý package mặc định của Node.js. Đây là một trong những công cụ quản lý package phổ biến nhất của Node.js. Công cụ này được tích hợp sẵn vào Node.js ngay khi cài đặt.

Nếu bạn đã từng làm PHP thì Npm cũng giống như là Composer trong PHP vậy. NPM hỗ trợ người dùng tải xuống và cài đặt các package cho dự án Node.js. Nói cách khác Npm hỗ trợ quản lý dependencies và devDependencies của 1 dự án.

Npm là gì?
Npm là gì?

Các package được tải xuống từ kho lưu trữ chính thức của npmjs.com. Bạn có thể tìm kiếm, tải xuống và đóng góp các package cho cộng đồng Node.js thông qua npmjs.com.

Ngoài ra Npm cũng cung cấp các tính năng như publish và update package. Thông qua đó người dùng có thể chia sẻ và cập nhật các package của mình. Cũng giống như composer thì npm cũng hỗ trợ các package với nhiều phiên bản khác nhau. Điều này rất quan trọng, nó giúp chúng ta có thể lựa chọn package phù hợp với yêu cầu dự án và môi trường phát triển của mình.

Mặc dù phổ biến là vậy, nhưng Npm cũng có 1 số hạn chế nhất định. Ví dụ như vấn đề liên quan tới tốc độ tải package, xử lý xung đột giữa các phiên bản của package. Tuy vậy thì trong các bản cập nhật mới của Npm vấn đề này đã được giải quyết.

Ngoài npm bạn có thể tìm hiểu thêm về Yarn, một công cụ mạnh mẽ được sinh ra để khắc phục các điểm yếu của npm.

Yarn là gì?

Không cần nhắc thì chúng ta cũng biết rằng, Yarn là một công cụ quản lý package phổ biến trong cộng đồng phát triển Node.js. Về lịch sử, thì Yarn được phát triển bởi Facebook và giới thiệu năm 2016. Bản thân Yarn được phát triển với mục đích giải quyết một số vấn đề liên quan đến npm – công cụ quản lý package mặc định của Node.js mà chúng ta đã tìm hiểu trong phần trên.

Yarn là gì?
Yarn là gì?

Một trong những tính năng nổi bật nhất của Yarn là tốc độ tải package nhanh hơn so với npm. Cũng giống như package-json.lock của npm, thì yarn sử dụng file yarn.lock để lưu thông tin các package đã tải về. Điều này đảm bảo rằng các package được tải về đúng phiên bản và không bị phá vỡ bởi các version mới hơn của các package. Các file lock này giúp Yarn tải các package nhanh hơn và hiệu quả hơn so với npm. (Cơ chế này Yarn ra mắt và áp dụng trước Npm)

Yarn có thể lưu trữ các thông tin package đã cài đặt trước đó. Điều này giúp cho tiết kiệm thời gian khi cài đặt lại các package cho dự án mới. Bản chất việc này là lưu cache bộ nhớ các package đã cài đặt. Tuy vậy đây cũng là một trong các nguyên nhân mà máy tính của bạn nhanh đầy ổ C (window). Ngoài ra Yarn cũng hỗ trợ cả proxy cho 1 số trường hợp cài đặt ở môi trường công ty doanh nghiệp.

Sự khác biệt giữa yarn và npm

Mặc dù Yarn và npm đều là các công cụ quản lý package cho Node.js. Đồng thời 2 công cụ này liên tục cải tiến để tăng cạnh tranh mang lại giá trị tốt hơn cho người dùng nhưng chúng cũng có một số sự khác biệt.

Tốc độ tải package

Tài thời điểmYarn được giới thiệu – năm 2016, Yarn đã có tốc độ tải xuống và xử lý dependencies nhanh hơn so với npm. Điều này có được là do Yarn sử dụng một thuật toán tối ưu hơn để tải xuống các dependencies. Ngoài ra còn là cơ chế lưu cache các package đã tải để giúp tối ưu tốc độ. Tuy nhiên, kể từ phiên bản npm 5.0 được ra mắt vào năm 2017, npm đã cải thiện tốc độ tải xuống và cache dependencies của mình, giúp giảm khoảng cách về tốc độ giữa hai công cụ này.

Một ví dụ tham khảo cho việc này

Chúng ta thử cài đặt thư viện lodash bằng npm và yarn để đo lường thời gian

Đối với linux bạn có thể chạy lệnh sau:

time npm install lodash

Trên window, bạn sử dụng power shell để chạy lệnh

Measure-Command { npm install lodash }

Kết quả thu được khi CodeTuTam chạy lệnh trên window

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 3
Milliseconds      : 115
Ticks             : 31156488
TotalDays         : 3.606075E-05
TotalHours        : 0.000865458
TotalMinutes      : 0.05192748
TotalSeconds      : 3.1156488
TotalMilliseconds : 3115.6488

Tương tự với Yarn

Measure-Command { yarn add lodash }

Kết quả thu được như sau

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 1
Milliseconds      : 160
Ticks             : 11605863
TotalDays         : 1.34327118055556E-05
TotalHours        : 0.000322385083333333
TotalMinutes      : 0.019343105
TotalSeconds      : 1.1605863
TotalMilliseconds : 1160.5863

Bỏ qua các yếu tố về đường truyền không ổn định thì chúng ta thấy rằng Yarn được tải xuống nhanh hơn tương đối so với npm.

Quản lý dependencies bằng file lcok

Cả Yarn và npm đều sử dụng file lock để đảm bảo các dependencies được tải xuống đúng phiên bản. Yarn sử dụng file yarn.lock để lưu trữ thông tin về dependencies và các phiên bản của chúng. Trong khi đó npm sử dụng file package-json.lock.

Quản lý packages bị deprecated

Yarn có khả năng hiển thị các dependencies bị deprecated còn npm không cung cấp chức năng này. Điều này có nghĩa là Yarn sẽ hiển thị cảnh báo khi bạn cài đặt một package đã bị deprecated. Điều này giúp bạn có thể tính toán tới phương án thay thể để đảm bảo ổn định của hệ thống đang phát triển.

Cách tái sử dụng dependencies

Đối với Npm, các dependencies được tải xuống và lưu trữ trong thư mục node_modules của project. Khi bạn tạo một project mới và cài đặt các dependencies giống nhau, npm sẽ tải xuống các dependencies đó một lần nữa và lưu trữ chúng trong thư mục node_modules  của project mới. Trong khi đó, Yarn có khả năng tái sử dụng các dependencies đã được tải xuống trước đó, giúp giảm thời gian tải xuống và lưu trữ.

Các lệnh đi kèm

Yarn và npm có một số lệnh giống nhau, nhưng cũng có một số lệnh khác nhau. Ví dụ như yarn workspaces cho phép bạn quản lý các package trong một project lớn, trong khi npm không có tính năng tương tự. Trong khi đó, npm có lệnh npm audit giúp bạn kiểm tra bảo mật báo cáo về bất kỳ lỗ hổng bảo mật nào mà các phụ thuộc đó có thể gây ra. Tính năng này giúp đảm bảo rằng các phụ thuộc của dự án được cập nhật và không có lỗ hổng bảo mật đã biết.

Ngoài những khác biệt trên còn một số khác biệt khác giữa Npm và Yarn. Tuy vậy thì việc sử dụng một trong 2 công cụ này đều là điều không bắt buộc, đa phần dựa vào sở thích, kinh nghiệm của lập trình viên, hoặc là đơn giản là phụ thuộc yêu cầu của dự án.

Hi vọng với bài viết này có thẻ giúp các bạn hiểu phần nào về Yarn và Npm. Nếu các bạn thấy bài viết này hay và ý nghĩa đừng quên like và chia sẻ bài viết này bạn nhé.

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    5/5 - (1 bình chọn)

    Xem thêm nhiều bài tin mới nhất về Javascript

    Xem thêm

      Codetutam

      Bình luận: