Skip to main content

npx 包运行工具

npx 是在 npm v5.2.0 之后的一种内建指令,可以理解为用于临时安装并执行某个包的一个工具。

一、npx 的安装

Node 自带 npm 模块,所以可以直接使用 npx 命令。万一不能用,就要手动安装一下:

npm install -g npx

二、npx 的使用

1、无需安装全局命令

npx 的一个好处就是避免安装全局命令,以及对于命令开发者来说,可以减少碎片化问题。

npx @vue/cli -V

# 等价于
npm install @vue/cli -g
vue -V

其中 npm 会永久安装全局命令的包,而 npx 安装使用后即移除。

2、自动寻找路径

如果一个包配置了 bin 后,当它被安装时,在项目的 node_modules/.bin 下就会有相应的指令,方便执行。

举个例子,项目安装了测试工具 Mocha,要查看 mocha 的版本:

# 一般方法查看
node-modules/.bin/mocha --version

# 使用 npx 查看
npx mocha --version

可以看到 npx 让项目内部安装的模块用起来更方便了。运行 npx mocha 会自动地在项目的 node_modules 文件夹中找到命令的正确引用,而无需知道确切的路径,也不需要在全局和用户路径中安装软件包。

npx 自动寻址的原理很简单,就是运行时会到 node_modules/.bin 路径和环境变量 $PATH 中检查命令是否存在。

3、使用指定的 Node.js 版本运行

使用 @ 指定版本,并将其与 node npm 软件包 结合使用:

npx node@10 -v #v10.18.1
npx node@12 -v #v12.14.1

这有助于避免使用 nvm 之类的工具或其他 Node.js 版本管理工具。

4、直接从 URL 运行代码片段

npx 可以直接运行 GitHub 上面的模块源码。

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

注意,远程代码必须是一个模块,即必须包含 package.json 和入口脚本。