Node.js、npm和Yarn的关系。

1、Node.js

JavaScript是一种编程语言,那是谁来执行它的源文件呢?这东西就是Node.js。

Node.js是一个基于Chrome V8引擎的JavaScript的运行环境,或者说是一个JavaScript的解释器。

至于为什么叫Node.js呢?是因为作者Ryan Dahl希望通过通信协议来组织许多的Node,来扩展达成构建大型网络应用的目的。就像乐高积木那样,通过简单的接插方式(通信协议),用积木组件(网络节点、Node),来扩展搭建庞大的乐高模型(网络应用)。

2、npm

npm是一款随着Node.js一起安装的包管理工具。

如果在编写JavaScript的时候需要使用依赖A,而A模块又依赖模块B,而模块B又依赖模块C和D。npm可以判断依赖关系,把所有依赖的包都下载并管理起来。

3、Yarn

Yarn同样也是一个软件包管理器。

虽然安装 Yarn 有很多种方式,但官网还是建议采用npm安装的这一种跨平台的安装方式:

1
npm install --global yarn

npm和Yarn优劣?

Yarn 是为了弥补 npm 的一些缺陷而出现的:

npm 安装包(packages)的速度不够快,拉取的 packages 可能版本不同。

npm 允许在安装 packages 时执行代码,这就埋下了安全隐患。

Yarn 没想要完全替代 npm,它只是一个新的 CLI (command-line interface,命令行界面)工具,拉取的 packages 依然来自 npm 仓库。仓库本身不会变,所以获取或者发布模块的时候和原来一样。

Yarn vs npm: Everything You Need to Know — SitePoint

Yarn: A new package manager for JavaScript - Engineering at Meta (fb.com)