0
点赞
收藏
分享

微信扫一扫

npx教程


npx 主要用于调用项目内部安装的模块,若本地找不到模块,就会下载同名模块。 

比如,本地没有安装​​http-server​​模块,下面的命令会自动下载该模块,在当前目录启动一个 Web 服务。

npx http-server

安装(通常安装了node.js即可使用)

npm 从5.2版开始,增加了 npx 命令,万一不能用,就要手动安装一下。

npm install -g npx

使用场景一:调用项目内部安装的模块

如使用npm安装了插件Mocha ,查看Mocha的版本,需用命令

# 项目的根目录下执行
node-modules/.bin/mocha --version

改用npx

npx mocha --version

 即npx可以直接调用项目内部安装的模块!

使用场景二:避免全局安装模块

默认  ​​create-react-app ​​这个模块是全局安装

npx create-react-app my-react-app

npx 将​​create-react-app​​​下载到一个临时目录,使用以后再删除。以后再次执行上面的命令,会重新下载​​create-react-app​

使用场景三:执行 GitHub 源码


# 执行 Gist 代码
$ npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

# 执行仓库代码
$ npx github:piuccio/cowsay hello

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

使用场景四:使用不同版本的 node

利用 npx 可以下载模块这个特点,可以指定某个版本的 Node 运行脚本


$ npx node@0.12.8 -v
v0.12.8

上面命令会使用 0.12.8 版本的 Node 执行脚本。原理是从 npm 下载这个版本的 node,使用后再删掉。

某些场景下,这个方法用来切换 Node 版本,要比 nvm 那样的版本管理器方便一些。

--no-install参数——强制使用本地模块,不下载远程模块

npx --no-install 模块名

--ignore-existing参数——忽略本地的同名模块,强制安装使用远程模块

npx --ignore-existing 模块名

-p 参数——指定 npx 所要安装的模块


$ npx -p node@0.12.8 node -v
v0.12.8

上面命令先指定安装​​node@0.12.8​​​,然后再执行​​node -v​​命令。

​-p​​参数对于需要安装多个模块的场景很有用。


$ npx -p lolcatjs -p cowsay [command]

-c 参数 —— 所有命令都用 npx 解释

  • 功能1:将所有命令都用 npx 解释
  • 功能2:将环境变量带入所要执行的命令

例如执行下方命令,只有第一个可执行项会使用 npx 安装的模块,后面的可执行项还是会交给 Shell 解释。


$ npx -p lolcatjs -p cowsay 'cowsay hello | lolcatjs'
# 报错

上面代码中,​​cowsay hello | lolcatjs​​​执行时会报错,原因是第一项​​cowsay​​​由 npx 解释,而第二项命令​​localcatjs​​​由 Shell 解释,但是​​lolcatjs​​并没有全局安装,所以报错。

​改用-c​​参数就可以


$ npx -p lolcatjs -p cowsay -c 'cowsay hello | lolcatjs'

 

npm 提供当前项目的一些环境变量,可以用下面的命令查看。


$ npm run env | grep npm_

​-c​​参数可以把这些 npm 的环境变量带入 npx 命令。


$ npx -c 'echo "$npm_package_name"'

上面代码会输出当前项目的项目名。

举报

相关推荐

0 条评论