npm从5.2版本开始,内置了npx模块
低版本的npm想用npx,需自行安装:
npm install -g npx
or
yarn global add npx
what is npx?
npx啥也不是,只是个帮我们找模块的模块(工具人)
npx能做啥?
- 调用内部模块:一般情况我们在项目上会装很多依赖模块,也就是装了很多工具在项目里面,这些工具如果要用一般都是, 举个栗子
./node_modules/.bin/webpack --config webpack.dev.js
有了npx,可以直接调用node_modules/.bin模块
npx webpack --config webpack.dev.js
-
使用临时模块:
直接上栗子: 如果在某个项目的根目录执行npx create-react-app test-app
第一步:上面说的npx可以调用内部模块,所以会先找当前项目的node_modules/.bin里面的create-react-app,找不到就找全局的create-react-app,再找不到就找npm缓存,还找不到就找npm仓库的,如果这都找不到就检查一下自己的网络吧,断网了。
第二步:按照上面的步骤找到create-react-app模块后,初始化一个名为 test-app 的react项目。
第三步:如果是找的npm仓库的,那就会下载回来,放到缓存里面,默认是npm的缓存位置(可以通过
--cache <path>设置缓存位置)
使用临时模块有个很明显的优点就是不需要全局安装就能使用
使用临时模块也可以指定模块版本(xxx@1.2.3)
还可以强制使用本地模块: --no-install
npx --no-install webpack -v
当然也可以强制使用远程模块: --ignore-existing
npx --ignore-existing webpack -v
小知识:
-
执行npm run会新建一个shell,并在这个shell里面执行指定的脚本命令,并且会将当前目录的node_modules/.bin 目录加入PATH(环境变量)里面,执行结束后,再将PATH恢复原样
-
npm模块的变化(新增/删除)会更新 node_modules/.bin里面的可执行文件,也就是项目安装依赖时,生成了.bin目录,用来存放项目依赖的可执行文件
-
清npm缓存:
npm clean cache --force
更详细教学请看阮一峰老湿的文章:www.ruanyifeng.com/blog/2019/0…