大家好,我是右子。
npm的全称是Node Package Manager
,是国外的友人搞了一个统一管理资源的工具服务。
为什么要做npm统一管理?
在早些年的时候开发,你用jquery要在jquery官网上下载,lodash要去lodash官网上下载,其他也都诸如此类。很麻烦,技术人就应该用技术的方式来方便自己。
于是这种资源的托管平台就出来了,现在很多公司也有属于自己内部的npm资源管理平台。
使用起来也很方便,通过配置的package.json文件执行npm install就可以自动安装下载了。
所以npm的目标是:自动化的依赖性和软件包管理。
npx是什么?
从npm的5.2.0版本开始就增加了npx
这个命令。当然如果你也可以手动
安装:
sudo npm install npx -g
为什么会有npx?
npx提升了CLI的操作易用性。
比如你的项目内安装了MyPackage
的一个module,不使用npx时,你想调用你只能:
// 方法1: 在package里面的scripts字段里配置
"scripts":{
"mp": "node_modules/.bin/MyPackage"
}
// 方法2: 在cmd命令行中敲击代码
# 项目的环境根目录下执行
$ node_modules/.bin/MyPackage
npx则可以解决这样的问题,让项目内部安装的模块用起来更方便:
npx MyPackage
还可以避免全局安装
的问题。
比如我们想用一个全局模块的方法,但是我们又不想安装到全局,就可以使用npx来运行它,而且不进行全局安装。
npx vuecli create <projectname>
实现原理
npx的实现原理其实很简单,就是在npx运行的时候,自动去node_modules/.bin路径和环境变量中里面检查命令是否存在。
其他
有两个常用参数:--no-install/--ignore-existing
。
强制使用本地模块时,可以在命令中带上--no-install
参数,如果本地不存在则会报错。
忽略本地模块,强制使用远程模块,可以在命令中带上--ignore-existing
参数。