npx--就这?

267 阅读2分钟

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…