简介

说明

        npx 是执行node软件包的工具,从 npm 5.2+开始,集成了npx(在npm/bin目录下)。

        用 npx 去执行包时,会保证使用的是最新的构建工具,无需担心包版本升级的问题。

执行流程

  1. 查找当前依赖包中的可执行文件包(./node_modules/.bin/),找到则执行它;
  2. 若找不到,就会去环境变量里面的 PATH 里找,找到则执行它;
  3. 若找不到,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和入口脚本