npm全局装置

npm i -g xxx

yarn 全局装置

yarn global add xxx

然而你可能会发现npm全局装置后的命令能够间接应用,而yarn却不行,这是为什么呢?

咱们来查看下npmyarnbin目录

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

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

简略的说计算机在执行命令的时候是在环境变量找对应的命令的地位的。如果不正确设置环境变量就不能正确应用相应的命令。如果执行某个命令,零碎无奈在以后文件夹里找到对应的.exe(可执行文件),那么零碎就会去环境变量path蕴含的门路找挨个找看是否能晓得对应的.exe,一旦找到第一个对应的.exe就运行命令,其余的门路下就不找了。如果找不到你就会看到“零碎找不到某某命令”的提醒。

在装置node的过程,装置过程会主动的减少nodenpm的门路到环境变量,如下图:

所以咱们应用npm装置的全局命令,能够间接应用,无需再配置环境变量。

关上bin目录能够发现全局装置的命令脚本或者可执行文件

留神:应用cnpm装置的yarn,如果要卸载,须要应用npm卸载,cnpm卸载不了,卸载实现,须要重启命令行工具。

然而yarnbin目录门路不会增加到环境变量中,这也就是为什么yarn全局装置后命令不能应用的起因。

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

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

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

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