1
头图

npm全局安装

npm i -g xxx

yarn 全局安装

yarn global add xxx

然而你可能会发现npm全局安装后的命令可以直接使用,而yarn却不行,这是为什么呢?

我们来查看下npmyarnbin目录

image.png

binbinary的缩写,意思是存放二进制可执行文件的目录,比如exe,msi,cmd等,而npm,yarn全局安装的命令就会从这里面开始查找可执行文件。

那为什么系统会从这个路径下进行查找可执行文件呢?这就要说下环境变量

简单的说计算机在执行命令的时候是在环境变量找对应的命令的位置的。如果不正确设置环境变量就不能正确使用相应的命令。如果执行某个命令,系统无法在当前文件夹里找到对应的.exe(可执行文件),那么系统就会去环境变量path包含的路径找挨个找看是否能知道对应的.exe,一旦找到第一个对应的.exe就运行命令,其他的路径下就不找了。如果找不到你就会看到“系统找不到某某命令”的提示。

在安装node的过程,安装进程会自动的增加nodenpm的路径到环境变量,如下图:

image.png

所以我们使用npm安装的全局命令,可以直接使用,无需再配置环境变量。

image.png

打开bin目录可以发现全局安装的命令脚本或者可执行文件

image.png

注意:使用cnpm安装的yarn,如果要卸载,需要使用npm卸载,cnpm卸载不了,卸载完成,需要重启命令行工具。

但是yarnbin目录路径不会添加到环境变量中,这也就是为什么yarn全局安装后命令不能使用的原因。

因此,全局安装命令行工具库最好使用npm或者cnpm,不建议使用yarn。可能有同学会说手动将yarnbin目录路径添加到环境变量中不就可以了吗?但如果npmyarn都安装了同一个命令行工具库,但是版本不一样,那在执行命令的时候应该去执行哪一个命令脚本呢?

或者你可以在yarnbin目录执行脚本命令文件,如下:

cd C:\Users\cassmall\AppData\Local\Yarn\bin
eslint --fix --ext .ts /src

参考文章:
yarn如何全局安装命令以及和环境变量的关系


记得要微笑
1.9k 声望4.5k 粉丝

知不足而奋进,望远山而前行,卯足劲,不减热爱。