如何在 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。

安装

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

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

[email protected]:~# npm install -g yarn

安装

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

作为旁注,如果您的 Ubuntu 版本没有 curl 安装,我们可以使用这个命令快速安装它。

[email protected]:~# apt-get install curl

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

[email protected]:~# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -

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

[email protected]:~# echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

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

[email protected]:~# apt update

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

[email protected]:~# 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) ... [email protected]:~#

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

[email protected]:~# apt install --no-install-recommends yarn

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

[email protected]:~# yarn --version  1.22.4 [email protected]:~#

配置纱线

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

[email protected]:~# yarn init

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. [email protected]:~#

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

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

如果我们选择使用不同的包,我们首先必须将它添加到我们的依赖项中。 这表明运行纱线添加 [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> 

此命令从外部 gzipped tarball 安装包。

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,或打开一个 聊天 或与我们联系,与我们知识渊博的解决方案或经验丰富的托管顾问之一交谈。