npm 全局装置
npm i -g xxx
yarn 全局装置
yarn global add xxx
然而你可能会发现 npm
全局装置后的命令能够间接应用,而 yarn
却不行,这是为什么呢?
咱们来查看下 npm
和yarn
的 bin
目录
bin
是 binary
的缩写,意思是寄存二进制可执行文件的目录,比方 exe,msi,cmd
等,而 npm,yarn
全局装置的命令就会从这外面开始查找可执行文件。
那为什么零碎会从这个门路下进行查找可执行文件呢?这就要说下环境变量
简略的说计算机在执行命令的时候是在环境变量找对应的命令的地位的。如果不正确设置环境变量就不能正确应用相应的命令。如果执行某个命令,零碎无奈在以后文件夹里找到对应的 .exe(
可执行文件),那么零碎就会去环境变量 path
蕴含的门路找挨个找看是否能晓得对应的 .exe
,一旦找到第一个对应的.exe
就运行命令,其余的门路下就不找了。如果找不到你就会看到“零碎找不到某某命令”的提醒。
在装置 node
的过程,装置过程会主动的减少 node
和npm
的门路到环境变量,如下图:
所以咱们应用 npm
装置的全局命令,能够间接应用,无需再配置环境变量。
关上 bin
目录能够发现全局装置的命令脚本或者可执行文件
留神:应用
cnpm
装置的yarn
,如果要卸载,须要应用npm
卸载,cnpm
卸载不了,卸载实现,须要重启命令行工具。
然而 yarn
的bin
目录门路不会增加到环境变量中,这也就是为什么 yarn
全局装置后命令不能应用的起因。
因而,全局装置命令行工具库最好应用 npm
或者 cnpm
,不倡议应用yarn
。可能有同学会说手动将yarn
的bin
目录门路增加到环境变量中不就能够了吗?但如果 npm
和yarn
都装置了同一个命令行工具库,然而版本不一样,那在执行命令的时候应该去执行哪一个命令脚本呢?
或者你能够在 yarn
的bin
目录执行脚本命令文件,如下:
cd C:\Users\cassmall\AppData\Local\Yarn\bin
eslint --fix --ext .ts /src
参考文章:
yarn 如何全局装置命令以及和环境变量的关系