一、什么是 Yarn global 全局安装

咱先来说说 Yarn 是啥。Yarn 就像是一个软件包的大管家,能帮咱们管理项目里用到的各种软件包。而 Yarn global 全局安装呢,就是把软件包安装到系统的全局环境里,不管你在哪个项目目录下,都能直接用这些安装好的软件包。

比如说,你想安装一个叫 create-react-app 的工具,用它来快速创建 React 项目。在命令行里输入:

# 技术栈:Node.js
# 使用 Yarn global 全局安装 create-react-app
yarn global add create-react-app

这样,create-react-app 就被安装到全局环境里了。之后,你在任何目录下都能使用 create-react-app 来创建新的 React 项目,就像这样:

# 创建一个名为 my-react-app 的 React 项目
create-react-app my-react-app

二、Yarn global 全局安装的优点

1. 方便快捷

全局安装的最大好处就是方便。想象一下,你有好几个项目都要用到某个工具,要是每个项目都单独安装一遍,那得多麻烦。用 Yarn global 全局安装,只需要安装一次,所有项目都能直接用。

比如说,你有三个不同的 Node.js 项目都要用到 eslint 这个代码检查工具。要是不全局安装,你得在每个项目的根目录下分别运行 yarn add eslint。但如果全局安装,只需要在命令行里运行:

# 技术栈:Node.js
# 全局安装 eslint
yarn global add eslint

之后,在任何项目里都能直接用 eslint 来检查代码了。

2. 节省磁盘空间

每个项目单独安装软件包会占用大量的磁盘空间。而全局安装只需要安装一次,所有项目共享这个软件包,能节省不少磁盘空间。

就拿 lodash 这个常用的 JavaScript 工具库来说,它的体积不小。如果每个项目都单独安装,磁盘上会有好几个相同的 lodash 副本。但全局安装后,只有一个 lodash 副本,磁盘空间就节省下来了。

3. 统一版本管理

全局安装能保证所有项目使用的软件包版本一致。这在团队开发中特别有用,能避免因为版本不一致导致的兼容性问题。

比如,团队里的所有成员都全局安装了 webpack 4.0 版本,这样大家在开发项目时,使用的 webpack 版本都是一样的,就不会出现因为版本不同而导致的构建问题。

三、Yarn global 全局安装的缺点

1. 版本冲突问题

全局安装的软件包版本是固定的,如果不同项目需要不同版本的同一个软件包,就会出现版本冲突。

比如说,项目 A 需要 babel 7.0 版本,而项目 B 需要 babel 8.0 版本。但全局安装只能安装一个版本的 babel,这样就会导致其中一个项目无法正常运行。

2. 依赖管理混乱

全局安装的软件包可能会和项目里的本地依赖产生冲突,导致依赖管理变得混乱。

比如,项目里已经安装了 react 16.0 版本,而全局环境里安装了 react 17.0 版本。在运行项目时,可能会因为使用了全局的 react 版本而导致项目出错。

3. 安全风险

全局安装的软件包直接影响系统的全局环境,如果软件包存在安全漏洞,会对整个系统造成威胁。

比如说,某个全局安装的软件包被恶意注入了代码,那么所有使用这个软件包的项目都可能受到攻击。

四、Yarn global 全局安装的应用场景

1. 开发工具类

create-react-appvue-cli 这类用于快速创建项目的工具,非常适合全局安装。因为它们不依赖于具体的项目,只需要安装一次,就能在任何地方使用。

# 技术栈:Node.js
# 全局安装 vue-cli
yarn global add @vue/cli

2. 命令行工具

一些常用的命令行工具,如 eslintprettier 等,也适合全局安装。这样在任何项目里都能直接使用这些工具来进行代码检查和格式化。

# 技术栈:Node.js
# 全局安装 prettier
yarn global add prettier

3. 共享库

如果有一些库是多个项目都要用到的,并且版本要求一致,也可以考虑全局安装。

比如,团队里所有项目都要用到 lodash,可以全局安装 lodash,这样所有项目都能共享这个库。

五、使用 Yarn global 全局安装的注意事项

1. 版本管理

在全局安装软件包时,要注意版本的选择。尽量选择稳定的、和项目兼容的版本。

比如,如果你要全局安装 webpack,可以先查看项目的文档,确定项目需要的 webpack 版本,然后再进行安装。

# 技术栈:Node.js
# 全局安装 webpack 4.0 版本
yarn global add webpack@4.0

2. 定期清理

全局安装的软件包会越来越多,占用磁盘空间。所以要定期清理不再使用的软件包。

可以使用 yarn global list 命令查看全局安装的软件包列表,然后使用 yarn global remove 命令删除不需要的软件包。

# 技术栈:Node.js
# 查看全局安装的软件包列表
yarn global list

# 删除全局安装的 eslint
yarn global remove eslint

3. 安全检查

在全局安装软件包之前,要确保软件包的来源可靠,避免安装到有安全漏洞的软件包。

可以查看软件包的官方文档、社区评价等,了解软件包的安全性。

六、总结

Yarn global 全局安装有它的优点,比如方便快捷、节省磁盘空间、统一版本管理等,但也存在一些缺点,如版本冲突、依赖管理混乱、安全风险等。在使用时,要根据具体的应用场景来决定是否使用全局安装。对于开发工具类、命令行工具和共享库等,可以考虑全局安装;但要注意版本管理、定期清理和安全检查,以避免出现问题。