简介
说明
npx 是执行node软件包的工具,从 npm 5.2+开始,集成了npx(在npm/bin目录下)。
用 npx 去执行包时,会保证使用的是最新的构建工具,无需担心包版本升级的问题。
执行流程
- 查找当前依赖包中的可执行文件包(./node_modules/.bin/),找到则执行它;
- 若找不到,就会去环境变量里面的 PATH 里找,找到则执行它;
- 若找不到,npx会去安装最新版本的包,并且去执行它。 //--no-install:之前未安装,则不安装。
命令
执行方式
1.下载完后执行。
例:npx -p node@0.10 node -v
2.下载完使用npx执行。
例:npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'
npx -p yo -p generator-webapp -c yo webapp
参数
参数 | 作用 | 示例 |
-p/--package | 指定模块。可指定多个 | npx -p node@0.10 node -v //下载node@0.10后,运行命令:node -v npx -p A -p B -c [command] //下载A和B之后,运行命令:command |
--no-install | 只用本地xxx命令,本地没有就报错 | |
--ignore-existing | 忽略本地安装的包,直接下载然后使用 | |
-c/--call | 1.使用npx执行字符串 2.把 npm 环境变量带入 npx 命令 | 下边这行会报错,因为字符串会交给shell或者cmd执行 npx -p lolcatjs -p cowsay 'cowsay hello | lolcatjs' 解决方法:npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs' 输出当前项目的项目名:npx -c 'echo "$npm_package_name"' |
npx与npm区别
包存活时长
npm:安装的全局(命令)包永久存在。npx:临时安装命令包到本地,用完后删除(所以可以用多个命令版本)。
比如使用 create-react-app 创建项目,只需 npx create-react-app my-app。
若用npm
npm install -g create-react-app
create-react-app test-app
npm 在本地全局安装 create-react-app,这包会存在 node 目录。以后创建 react 项目执行 create-react-app 即可。
若用npx
npx create-react-app test-app
npx 临时安装 create-react-app ,项目初始化完成后,就删掉。
执行命令的流程
本处以安装webpack并查看其版本为例。
npm //需指定路径
npm i webpack -D
./node_modules/.bin/webpack -v
npx //无需指定路径
npm i webpack -D
npx webpack -v
使用不同版本/本地/下载 的命令(npm不支持)
作用 | 示例 | 说明 |
使用特定版本的包的命令 | npx node@0.12.8 -v | |
只使用本地xxx命令 | npx --no-install xxx | 本地没有就报错 |
只使用远程xxx命令 | npx --ignore-existing xxx | 忽略本地安装的包,直接使用下载的包 |
执行github代码(npm不支持)
示例:npx github:piuccio/cowsay hello
说明:远程代码必须是一个模块,即必须包含package.json和入口脚本