关于yarn:yarn全局安装后命令为何不能使用

9次阅读

共计 861 个字符,预计需要花费 3 分钟才能阅读完成。

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\bin
eslint --fix --ext .ts /src

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

正文完
 0