NPM
npm 是一个node package installer commander tool。
在安装了node.js环境下可以通过npm i xxx 来安装你需要的node package到本地或者全局。
npm i webpack -G //全局安装,路径为 /usr/local/bin
npm i webpack -S -D //本地安装, 安装路径为 ./node-modules/.bin/
总结:npm是一个node package安装工具。
NPX
npx会在安装npm的时候一起安装到本地。npx有两个应用场景:
在没有安装package的情况下可以使用npx来运行,例如:
npx react-create-app init
// 会使用npm registry里面的react-create-app创建一个react app在本地,如果用npm的话需要先install
在没有全局安装某个package的情况下使用该包:
npx webpack-dev-server --config webpack.dev.js
// 在没有全局安装webpack-dev-server 的时候,直接在命令行运行该包的命令是找不到的,会提示:
bash: webpack-dev-server: command not find
总结:npx的作用是先检查本地有没有安装某个package,如果没有去远程registry找,找到的话直接使用,不用下载到本地node-modules包里面,这样就能优化本地项目的大小,也可以避免安装package到全局。
<1>从功能上分: 所有的都是为了安装依赖(js代码库)
<2>从结果上分:
npm\cnpm\yarn 都会把依赖下载到node_modules中(本地开发环境)
npx会先检测本地node_modules中是否有相关依赖,有则直接调用他的命令行,没有的话回去上一级的node_modlues中寻找,直到找到系统的node_mudules中,如果还是没有找到,则会通过网络将相关依赖下载到电脑内存中,执行完相关代码,就会马上删除内存中的依赖
<3>从创造它的目的上说: npm\cnpm\yarn是为了项目开发
而npx是为了在不侵入源代码的基础上,使用node_modules中的依赖的命令行工具
npm cnpm yarn 的区别
<1>从开发者上看:
npm: [node官方/npm官方]出的node packages manager(npm的缩写) node包管理器
优点:官方维护的,包的镜像是官方提供,最可靠
缺点:
<1>官网在国外,很多包有可能因为网络原因下载不下来,其他的下载速度很慢
<2>它无法锁定包
cnpm: 阿里巴巴出的,为了解决下载速度慢的问题 chinese node packages manager(cnpm的缩写)
<3>yarn facebook出的[安装速度快,可以锁定住包的最小版本]