Yarn vs npm: Everything You Need to Know
Reference:
Trong cộng đồng Javascript, các lập trình viên chia sẻ hàng trăm nghìn các thư viện với các đoạn code đã thực hiện sẵn một chức năng nào đó. Nó giúp cho các dự án mới tránh phải viết lại các thành phần cơ bản, các thư viện lập trình hay thậm chí cả các framework.
Một dự án thường cần rất nhiều packages để sử dụng cho nhiều mục đích khác nhau trong dự án và việc quản lý các phần mềm này là rất cần thiết do các packages đượ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 hơn trong quá trình phát triển dự án. 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. Do đó mà các công cụ như yarn, npm ra đời. Cả hai trình quản lý gói đều lưu trữ các tệp phụ thuộc (dependency files) vào thư mục node_modules. Tuy nhiên, trong Yarn 2, theo mặc định, thư mục sẽ không còn được hỗ trợ nữa.
npm
npm (Node Package Manager), được phát hành lần đầu vào năm 2010, là một trình quản lý gói cực kỳ phổ biến trong giới phát triển JavaScript. Đây là gói mặc định được cài đặt tự động bất cứ khi nào bạn cài đặt Node.js (Install Node.js) trên hệ thống của mình.
Yarn
Install Yarn on Linux:
npm install yarn
sudo apt-get update && sudo apt-get install yarn
Yarn vs npm: Sự khác biệt về chức năng
yarn.lock file
yarn.lock
file in your code repository.Cài đặt song song
No cache | Cached | Reinstall | |
---|---|---|---|
npm 6.13.4 | 67 seconds | 61 seconds | 28 seconds |
Yarn 1.21.1 | 57 seconds | 29 seconds | 1.2 seconds |
npm liệt kê tất cả các packages và các dependencies đã cài đặt khi chạy npm install [package_name]. Yarn là một trường hợp khác, nó không liệt kê tất cả. Khi thông tin có thể thu được thông qua các lệnh khác, nó sẽ liệt kê ít thông tin hơn với các emojis phù hợp (trừ khi bạn đang sử dụng Windows).
CLI Command (Yarn and npm)
Commands common:
Command | npm | Yarn |
---|---|---|
Initializing a project | npm init | yarn init |
Installing dependencies | npm install | yarn install |
Running tests for the current package | npm test | yarn test |
Confirming if any package is outdated | npm outdated | yarn outdated |
Publishing a package to npm | npm publish | npm publish |
Running a script | npm run | yarn run |
Manipulating the local package cache | npm cache clean | yarn cache clean |
Logging in and out | npm login (and log out) | yarn login (and log out) |
Commands different:
Command | npm | Yarn |
---|---|---|
Installing packages | npm install [package_name] | yarn add [package_name] |
Uninstalling packages | npm uninstall [package_name] | yarn remove [package_name] |
Updating | npm update | yarn upgrade |
Updating packages | npm update [package_name] | npm upgrade [package_name] |
Installing package globally | npm install --global [package_name] | yarn global add [package_name] |
Uninstalling package globally | npm uninstall --global [package_name] | yarn global remove [package_name] |
Interactively updating dependencies | npm run upgrade-interactive | yarn upgrade-interactive |