npx: npm 5.2.0 内置的包执行器 归纳自 Introducing npx: an npm package runner 一文,详细内容请查看原文。node
近日发布的 npm 5.2.0 版本中内置了伴生命令:npx,相似于 npm 简化了项目开发中的依赖安装与管理,该工具致力于提高开发者使用包提供的命令行的体验。npx 容许咱们使用本地安装的命令行工具而不须要再定义 npm run-script,而且容许咱们仅执行一次脚本而不须要再将其实际安装到本地;同时 npx 还容许咱们以不一样的 node 版原本运行指定命令、容许咱们交互式地开发 node 命令行工具以及便捷地安装来自于 gist 的脚本。react
在传统的命令执行中,咱们须要将工具添加到 package.json 的 scripts
配置中,这种方式还须要咱们以 --
方式传递参数;咱们也可使用 alias npmx=PATH=$(npm bin):$PATH,
或者 ./node_modules/.bin/mocha
方式来执行命令,虽然都能达到目标,但难免繁杂了许多。而 npx 容许咱们以 npx mocha
这样的方式直接运行本地安装的 mocha 命令。git
完整的 npx 命令提示以下:github
从 npm 的可执行包执行命令 npx [选项] <命令>[@版本] [命令的参数]... npx [选项] [-p|--package <包>]... <命令> [命令的参数]... npx [选项] -c '<命令的字符串>' npx --shell-auto-fallback [命令行解释器] 选项: --package, -p 包安装的路径 [字符串] --cache npm 缓存路径 [字符串] --install 若是有包缺失,跳过安装 [布尔] [默认值: true] --userconfig 当前用户的 npmrc 路径 [字符串] --call, -c 像执行 `npm run-script` 同样执行一个字符串 [字符串] --shell, -s 执行命令用到的解释器,可选 [字符串] [默认值: false] --shell-auto-fallback 产生“找不到命令”的错误码 [字符串] [可选值: "", "bash", "fish", "zsh"] --ignore-existing 忽略 $PATH 或工程里已有的可执行文件,这会强制使 npx 临时安装一次,而且使用其最新的版本 [布尔] --quiet, -q 隐藏 npx 的输出,子命令不会受到影响 [布尔] --npm 为了执行内部操做的 npm 可执行文件 [字符串] [默认值: "/Users/apple/.nvm/versions/node/v8.1.3/lib/node_modules/npm/bin/npm-cli.js"] --version, -v 显示版本号 [布尔] --help, -h 显示帮助信息 [布尔]
npx 还容许咱们单次执行命令而不须要安装;在某些场景下有可能咱们安装了某个全局命令行工具以后一直忘了更新,致使之后使用的时候误用了老版本。而使用 npx create-react-app my-cool-new-app
来执行 create-react-app 命令时,它会正常地帮咱们建立 React 应用而不会实际安装 create-react-app 命令行。
咱们还可使用相似于 $ npx -p node-bin@6 npm it
的格式来指定 Node 版本,或者使用 npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
方式直接运行来自于 Gist 的脚本。shell