npx 官网的简介:https://docs.npmjs.com/cli/v10/commands/npx

npx 是一个命令行工具,npm 5.2.0 版本中新增的功能。以前用 vue 的脚手架创建项目,需要全局安装 vue-cli,用 npx 可以不用全局安装就能使用。

vue2 创建项目,之前需要全局安装:

npm install @vue/cli -g
vue create project-name

用 npx 可以直接创建:

npx @vue/cli create project-name

使用方法就是 npx 包名 运行命令,就是比较看网速,创建的时候需要去远程下载,比较费时间。

npx 的运行机制:

  • 当 npx 运行某个命令时,npx 会首先检查本地是否已经安装了该命令对应的包。
  • 如果本地已经安装了,npx 会直接使用本地安装的包来执行命令。
  • 如果本地没有安装,npx 下载最新版本的相关包。
  • 载完成后,npx 会临时将包安装到一个临时目录中,并使用该临时目录中的包来执行命令。
  • 命令执行完毕后,npx 会自动清理临时目录中的包,以节省空间。

npx 的好处肯定就显而易见了,不用全局安装,节省了空间,每次使用的包都是远程最新的,对于那些只需要偶尔使用某些命令或工具的情况非常有用,如果是想要用不同的版本,npx 的优势也是很明显,根本不会版本冲突。缺点就是每次都得下载一下,网络不好的情况,需要一定的时间,如果不是常用的,用 npx 会很方便快捷,如果是常用的,还是建议全局安装一下。

如果想看 npx 的缓存位置可以用 npm config get cache,里面_npx 就有,但是时效和什么时候清除,怎么样的机制清除,没找到对应的官方文档。

npm 和 npx 侧重点不同:

  • npm 侧重 manage,安装、管理、发布
  • npx 侧重 execute,执行
  • npm 是有版本的,可更新,npx 就是一个工具,只执行

详细参阅:https://www.npmjs.com/package/npx