1.npm
npm全称是【node package management】,是nodejs中内置的软件包管理工具,顾名思义,他是用来管理管理的软件。当你下载nodejs 的时候默认就有npm了。它是世界上最大的软件注册表,但是但是遗憾的是,国内用npm的时候有时候会很慢。
2.nvm
nvm是个版本管理工具,举例来说,你的手上有好几个nodejs的项目,每个项目所依赖的nodejs版本都不相同。这样管理起项目来就非常麻烦。nvm的诞生就是为了管理这些nodejs的版本,它可以让你在不同的nodejs版本之间来回切换。可以认为nvm在npm只上。
3.nrm
上面说了npm是全世界最大的软件注册表,每天有数以万计的人从这个地方下载软件,这种情况一是会对中心服务器造成压力,另一个像国内访问国外的源会比较慢。nrm的诞生就是为了使用者在各个不同npm源之间来回切换。比如你在国内,你使用npm谷歌的源下载软件就龟速,但是你使用npm淘宝的源就比较快,这时候你就可以使用nrm来快速切换源了
4.cnpm
上面第三项说了国内访问国外的源比较慢,cnpm可以认为是中国版版本的npm,和国外的尽量保持10分钟一更新,它和npm最主要的区别就是它的源在国内,国内使用cnpm比npm 快的多。国内的完全可以用cnpm来代替npm
5.yarn
yran是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,它的诞生主要是为了弥补npm的缺点,一定程度上可以认为是yarn的替代品。它相比起npm来说,速度更快,更加简洁,现在很多公司已经在使用yarn了。
6.npx
npm从5.2版本开始,增加了npx命令,安装npm的时候,会自动安装npx。
npx主要是用来调用项目内部安装的模块。比如,我们在开发环境下安装了webpack
npm install webpack --save-dev
一般来讲,要调用webpack,只能在项目脚本和 package.json 的 script 字段里面(script字段里的命令也是调用项目内部安装的模块),如果想在命令行下调用,必须像下面这样
./node_modules/.bin/webpack -v
而使用npx的话,就可以写成下面这样
npx webpack -v
- npx的原理
npx在运行的时候,会自动查找当前依赖包中的可执行文件,也就是会先在node_modules/.bin目录下查找;如果找不到,就会去环境变量$PATH里找;如果依然找不到,就会帮你安装。