如何在 Ubuntu 18.04 上安装 Yarn

什么是纱线?

Yarn 是一个包管理工具,专门设计用于通过并行运行操作来加快从 npm 注册表安装包的速度,从而提高速度、提高可靠性和提高安全性。 Yarn 使我们能够更好地自动化 npm 软件包的安装过程,并且在升级、进行配置更改或删除 npm 软件包时也很有优势。

Yarn 包管理器由 Facebook 与 Google、Tilde 和 Exponent 合作,以更好地管理和集成 javascript 代码一致性。 因为 Yarn 兼容 NPM 注册中心,它会缓存下载的包,所以不需要两次下载同一个包。 使用 yarn 可以保证在一个系统上运行的任何安装也可以在另一个系统上运行。 在安全性方面,yarn 在执行其代码之前会检查每个已安装包的完整性。

什么是 NPM?

为了对比纱线的能力,我们必须看看 NPM。 NPM 是与 NPM 注册表结合使用的默认 javascript 包管理工具。 它使用命令行界面客户端以及访问 javascript 软件的在线数据库。 它允许与其他开发人员共享 Javascript 代码,从而使其他人可以轻松地在其应用程序中重用通用代码片段。

随着这些年来代码库规模的不断增长, Facebook 软件工程师遇到了性能、一致性和安全性方面的问题。 他们需要一种方法来更快地安装软件包并安全地跨不同环境一致地管理依赖项。 答案是 Yarn。

安装

在本教程中,我们将解释如何通过 Yarn 存储库在 Ubuntu 18.04 系统上安装 Yarn 包管理器。 这个 repo 维护得很好,并且始终提供最新的可用版本。 我们还将介绍一些基本的 Yarn 命令和选项。

可以使用以下 npm 命令安装 Yarn,但不建议这样做。 我们只提到这一点是为了展示如何使用 nmp 安装它。

root@host:~# npm install -g yarn

Ubuntu 安装

在 Ubuntu 上安装的首选方法是使用 apt 包管理器。 这个选项允许我们将 Yarn 与 npm 分开,因此我们不必在 npm 上回复。 使用 apt 包管理器也将使我们能够定期更新 Yarn。 在开始安装过程之前,我们应该以 root 或具有以下权限的用户身份登录 sudo 特权。

附带说明一下,如果您的 Ubuntu 版本没有 curl 安装好了,我们可以使用这个命令快速安装。

root@host:~# apt-get install curl

第一步是下载存储库的安全密钥。 我们将使用以下 curl 命令导入 GPG 密钥。

root@host:~# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

接下来,我们将启用 Yarn 存储库本身并使用此命令将其添加到我们的存储库列表中。

root@host:~# echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

将存储库添加到我们的系统后,我们需要更新我们的包列表。

root@host:~# apt update

接下来,我们可以安装最新版本的 Yarn。

root@host:~# apt install yarn
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libc-ares2 libhttp-parser2.7.1 nodejs nodejs-doc
The following NEW packages will be installed:
  libc-ares2 libhttp-parser2.7.1 nodejs nodejs-doc yarn
0 upgraded, 5 newly installed, 0 to remove and 161 not upgraded.
Need to get 6497 kB of archives.
After this operation, 30.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Selecting previously unselected package nodejs-doc.
(Reading database ... 150019 files and directories currently installed.)
Preparing to unpack .../nodejs-doc_8.10.0~dfsg-2ubuntu0.4_all.deb ...
Unpacking nodejs-doc (8.10.0~dfsg-2ubuntu0.4) ...
Selecting previously unselected package yarn.
Preparing to unpack .../archives/yarn_1.22.4-1_all.deb ...
Unpacking yarn (1.22.4-1) ...
Selecting previously unselected package libc-ares2:amd64.
Preparing to unpack .../libc-ares2_1.14.0-1_amd64.deb ...
Unpacking libc-ares2:amd64 (1.14.0-1) ...
Selecting previously unselected package libhttp-parser2.7.1:amd64.
Preparing to unpack .../libhttp-parser2.7.1_2.7.1-2_amd64.deb ...
Unpacking libhttp-parser2.7.1:amd64 (2.7.1-2) ...
Selecting previously unselected package nodejs.
Preparing to unpack .../nodejs_8.10.0~dfsg-2ubuntu0.4_amd64.deb ...
Unpacking nodejs (8.10.0~dfsg-2ubuntu0.4) ...
Setting up nodejs-doc (8.10.0~dfsg-2ubuntu0.4) ...
Setting up libhttp-parser2.7.1:amd64 (2.7.1-2) ...
Setting up yarn (1.22.4-1) ...
Setting up libc-ares2:amd64 (1.14.0-1) ...
Setting up nodejs (8.10.0~dfsg-2ubuntu0.4) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
root@host:~#

如果你没有安装 Node.js,上面的 apt 命令会安装它。 如果我们想跳过 Node.js 的安装,我们将使用这个命令。

root@host:~# apt install --no-install-recommends yarn

为了确认 Yarn 安装成功,我们将通过运行以下命令检查版本。

root@host:~# yarn --version 
1.22.4
root@host:~#

配置纱线

为了创建一个新项目,我们将使用这个命令。

root@host:~# yarn init

初始化脚本会询问一些问题,但您不必回答这些问题,您可以按 Enter 键获取默认值。

yarn init
yarn init v1.22.4
question name (root): host.lwkb1.com
question version (1.0.0):
question description: Yarn test
question entry point (index.js):
question repository url:
question author: Leo
question license (MIT):
question private:
success Saved package.json
Done in 17.25s.
root@host:~#

初始化脚本完成后,我们将拥有一个基本的 package.json 文件,其中包含之前提供的信息。 您可以使用 vim 或 nano 打开和编辑此文件。 我们将使用 cat 命令简单地查看它。

root@host:~# cat package.json
{
  "name": "host.lwkb1.com",
  "version": "1.0.0",
  "description": "Yarn Test",
  "main": "index.js",
  "author": "Leo",
  "license": "MIT"
}
root@host:~#

如果我们选择使用不同的包,我们最初必须将它添加到我们的依赖项中。 这表明运行 yarn add [package-name] 将轻松将其添加到您的项目中。

yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]

上面的命令也会更新 package.json 和 yarn.lock 文件,这样所有在这个 yarn 项目上工作的人都可以使用相同的依赖。

我们还可以从多个位置选择不同的包。 使用以下命令。

yarn add package-name 

这将从主要的 npm 注册表安装包,除非我们的 package.json 文件中指定了另一个位置。

接下来,以下命令将安装我们系统本地的包。 这个命令通常用于检查我们尚未发布到注册表的其他包。

yarn add file:/path/to/local/folder 

以下命令从 gzipped tarball 安装一个包,我们可能希望在发布之前以打包格式共享它。

yarn add file:/path/to/local/tarball.tgz 

下一个命令将符号链接安装到我们本地文件系统上的包。 这对于在 monorepo(或单体存储库)环境中开发相关包通常很有用。

yarn add link:/path/to/local/folder 

此命令从远程 git 存储库安装包。

yarn add <git remote url>  

此命令在选定的 git 分支、git commit 或 git 标记处安装来自远程 git 存储库的包。

Yarn add <git remote url>#<branch/commit/tag> 

此命令从外部 gzip 压缩包安装包。

Yarn add https://my-project.org/package.tgz 

在这里,我们可以分别添加对等依赖项、可选依赖项和 devDependencies:

yarn add [package] --peer
yarn add [package] --optional
yarn add [package] --dev 

要升级这些依赖项之一,我们可以运行以下命令之一。

yarn upgrade [package]
yarn upgrade [package]@[version]
yarn upgrade [package]@[tag]

如果未指定包名称,该命令会将项目依赖项更新到其最新版本,与 package.json 文件中列出的版本范围一致。 否则,仅更新所需的包。 我们还可以通过简单地键入来删除依赖项

yarn remove [package]

要安装项目的所有依赖项,我们将使用此命令。

yarn 

或者,我们可以使用它来更新依赖项。

yarn install

结论

Yarn 是我们 JavaScript 代码包管理的绝佳选择。 它允许我们与来自世界各地的其他开发人员共享和使用代码,因为它在开发我们的软件时提供了快速、可靠的解决方案。

如果您想了解有关设置开发或生产环境以使用 Yarn 的更多信息,请致电 800.580.4985 联系我们,或打开 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问之一交谈。