rushx
rushx
命令类似于 npm run
或 pnpm 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 run
或 npx
类似的功能,但具有一些额外的优势
- 通过使用 Rush 版本选择器 来确保确定性工具
- 根据 Rush 的配置准备 shell 环境
- 实现额外的验证