Home > Article > Web Front-end > Introduction and installation of Node.js package manager Yarn
Preface
Have you all been quietly attracted by Yarn in the past two days? Recently, Facebook released a new node.js package manager Yarn to replace npm. In order to keep up with the trend of Javascript, I have a brief taste of this package management that claims to be fast, reliable and safe, so the content I write will not be very detailed, and more may be just for this new package management. Compare the differences with npm. There may be some things written incorrectly. If so, please correct me.
1. Installation
The first step is of course installation. Unlike npm, a package manager that is hand-picked and installed with nodejs, Yarn needs to be installed manually. This is understandable, after all, it is a brand new thing. But to be honest, the installation experience is not very good...
Why do you say that...because my development environment is Arch Linux, and the official documentation only provides the installation methods of apt-get Linux and yum Linux...
Since the ambition is To replace npm, there must be a compatibility solution for all platforms. Sure enough, there is a manual installation script suitable for all distributions, so I tried this, but I installed it three times without success. Various problems...
Finally, I discovered that yarn can actually be installed with npm just like a module:
npm install -g yarn
A thing that wants to replace npm actually needs to be installed with npm? Well, no matter how you put it, it’s installed like this, so I say the installation experience is just average... Maybe it will be better for other distributions. Maybe for some popular distributions and macOS, the installation is A command is typed into the terminal.
Although as of the time I wrote this article, there is already an installation method on Arch Linux, but it is through yaourt(AUR). However, I don’t think it is necessary for novices to manually install yaourt. Installing yarn again is easier than installing nodejs directly and then npm install. Maybe at this stage, Arch is still a niche distribution compared to Debian/Ubuntu/CentOS...
2. Dependencies Management
This concludes the installation part. Since you are a package manager, you must fulfill your responsibilities. Next, I want to try whether this new package management is really as magical as it is advertised. Next, I compared yarn with npm and cnpm in the same environment. Due to the special environment within the wall, npm's registry has been replaced with https://registry.npm.taobao.org.
FASTER
Before the comparison, I think this comparison is a bit unfair to yarn, because npm has set up a domestic mirror, and as of the time this article was published, yarn did not have a domestic mirror. , so there is no special setting for yarn. I'm a little worried about whether this will cause errors in the test results.
Since Yarn is from Facebook, let’s try to install their React first:
The first is of course the protagonist yarn. It should be noted that the way yarn installs dependencies is different from npm. You need to execute the following command to install dependencies:
yarn add react
# same as npm install react
You can see that it takes 13.3s for yarn to install React, which is really fast. Satisfactory.
Next is npm. Because npm does not display the command time, I checked the stopwatch and found that it was about 45 seconds, which was several times longer than yarn. It seems that yarn is indeed faster than npm, and npm still uses domestic sources.
However, cnpm is faster, and it only takes 4 seconds to complete the entire installation process. But after all, cnpm is a derivative of npm, which makes sense. Since this thing can improve the speed of npm, who knows if there will be cyarn in the future? But through this test, we can see that the speed of yarn is indeed a qualitative leap compared to the native npm, and FASTER is not in vain.
Next, I tried to install other packages and compared them many times. On average, yarn is 3-6 times faster than npm (this is the case of installing smaller packages).
RELIABLE/SECURE
As for whether this package management is reliable/secure, I haven’t thought of how to test it for the time being. I only know that when I use it, there is a chance that some inexplicable errors will occasionally be reported, but if I execute the command twice, it will work normally again. After all, yarn is a new thing, so it’s understandable. However, within this day, yarn's GitHub project homepage has won 9K stars, and there have been thousands of issues and pull requests, which shows its popularity, so I am still very optimistic about its prospects.
Offline mode
One of the highlights of Yarn is that dependencies can be installed offline. Of course, the premise is that this dependency has been installed before. Yarn will cache installed packages. If the -offline parameter is specified during the next installation, Yarn will directly retrieve the package from the cache, which will greatly shorten the time to install dependencies.
Unfortunately, even though I read the official documentation over and over again, this feature still does not work properly in my environment. I will find out the reason and add this paragraph later.
But this feature is really eye-catching. It can be said to have solved a shortcoming of npm, a very fatal shortcoming. With such a function, existing dependencies can be installed in the future without a network. It also saves downloading time and greatly improves efficiency. Imagine you don’t have to wait for 15 minutes when executing react-native init in the future. Wouldn’t you be very happy (of course, it is still unknown when Facebook will replace the installation dependency process of react-native init with its own package management installation).
yarn.lock file
Yarn uses a yarn.lock file to enable your program to obtain a consistent experience on different machines. Although this explanation is far-fetched, at least I don’t have a chance to show it to everyone, so I already have a good conscience (fog). It feels like this is a very high-end thing, but in fact it is mainly a supplement to package.json.
If you are interested, you can read the detailed introduction here (you need to be better in English):
Yarn
Fast, reliable, and secure dependency management. yarnpkg.com
Summary
Sometimes just between opening and closing your eyes, a new thing quietly appears without you knowing it. Yarn came out today, but I don’t know what will appear tomorrow. Fortunately, we were able to catch the early train for this new gadget.
But it must be said that the emergence of yarn is indeed progressive. It solves some of the known problems of npm and develops new features. In this case, it is worth contacting and learning. Although there is still a long way to go before replacing npm, it can be foreseen that its future will be bright.
The above is the entire content of this article. I hope the content of this article will be of some help to everyone's study or work.
For more introductory introduction and installation related articles about Node.js package manager Yarn, please pay attention to the PHP Chinese website!