npx

npx

npm v5.2.0引入的一条命令(npx),提升了开发者使用包内提供的命令行工具的体验。

一、调用项目安装的模块

安装webpack:

npm i -D webpack

调用项目内部的webpack:

# 项目的根目录下执行
./node_modules/.bin/webpack -v

有了 npx,只需要这样:

npx webpack -v
#npx 会自动查找当前依赖包中的可执行文件,如果找不到,就会去 PATH 里找。如果依然找不到,就会帮你安装!

二、避免全局安装模块

  • create-react-app这个模块是全局安装,npx 可以运行它,而且不进行全局安装。

老方法:

npm install -g create-react-app
create-react-app my-app

npx方式:

npx create-react-app my-app
#这条命令会临时安装 `create-react-app` 包,命令完成后`create-react-app` 会删掉,不会出现在 global 中。下次再执行,还是会重新临时安装。

三、使用不同版本的 node

npx node@0.12.8 -v
#npx 可以下载模块,上面命令会使用 0.12.8 版本的 Node 执行脚本。原理是从 npm 下载这个版本的 node,使用后再删掉。

#指定node版本来运行`npm scripts`
npx -p node@8 npm run build

四、执行 GitHub 源码

npx 还可以执行 GitHub 上面的模块源码。

# 执行 Gist 代码
npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
# 执行仓库代码
npx github:piuccio/cowsay hello
  • 注意,远程代码必须是一个模块,即必须包含package.json和入口脚本。

五、开启静态服务器

npx http-server

六、参数

--no-install:强制使用本地模块,不下载远程模块,如果本地不存在该模块,就会报错。

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

-p:指定 npx 所要安装的模块

-c:如果 npx 安装多个模块,默认,第一个可执行项会使用 npx 安装的模块,后面的可执行项还是会交给 Shell 解释(可能会报错)。

  • -c所有命令都用 npx 解释
  • 环境变量带入所要执行的命令
npx -c 'echo "$npm_package_name"'
#输出当前项目的项目名

七、总结

  • 临时安装可执行依赖包,不用全局安装,不用担心长期的污染。
  • 可以执行依赖包中的命令,安装完成自动运行。
  • 自动加载node_modules中依赖包,不用指定$PATH。
  • 可以指定node版本、命令的版本,解决了不同项目使用不同版本的命令的问题。
上一篇:无法将“nodemon 识别为...“


下一篇:前端超简单的图文并茂cordova开发使用指南+自定义插件