Rush Stack商店博客活动
跳到主要内容

rushx

rushx 命令类似于 npm runpnpm run:它调用在单个项目的 **package.json** 文件的 "scripts" 部分中定义的 shell 脚本。任何额外的 CLI 参数都只传递给该 shell 脚本,没有任何验证。

考虑这个非常简单的示例项目

<我的项目>/package.json

{
"name": "my-project",
"version": "0.0.0",
"scripts": {
"build": "rm -Rf lib && tsc",
"test": "jest"
}
}

如果您单独调用 rushx,它将简单地显示可用的命令

usage: rushx [-h]
rushx [-q/--quiet] <command> ...

Optional arguments:
-h, --help Show this help message and exit.
-q, --quiet Hide rushx startup information.

Project commands for my-project:
build: "rm -Rf lib && tsc"
test: "jest"

如果您调用 rushx build,则它将运行 rm -Rf lib && tsc。如果您添加一个参数,例如 rushx build --verbose,它将被盲目地追加到字符串的末尾:rm -Rf lib && tsc --verbose

rush vs rushx

这两个命令很容易混淆

  • rush 调用影响整个仓库(“全局命令”)或影响多个项目(“批量命令”)的通用操作。这些命令 应该经过精心设计。Rush 强制要求其参数必须经过验证和记录。
  • rushx 对单个项目执行自定义操作。虽然其中一些用于实现批量命令,但其中许多将是仅由该特定项目的开发人员理解的帮助脚本。Rush 不会严格验证这些命令。

为什么使用“rushx”而不是“pnpm run”或“npx”?

rushx 命令具有与 pnpm runnpx 类似的功能,但具有一些额外的优势

  • 通过使用 Rush 版本选择器 来确保确定性工具
  • 根据 Rush 的配置准备 shell 环境
  • 实现额外的验证