贡献
Rush 在 Rush Stack 项目家族的单一仓库中开发
https://github.com/microsoft/rushstack
在 rushstack-websites GitHub 仓库中为文档网站做出贡献。
有关构建 Rush 的一般说明和提交 PR 的指南,请阅读 Rush Stack 单一仓库的 贡献 文档。
相关的单一仓库项目文件夹是
- apps/rush - 命令行界面前端
- libraries/rush-lib - 自动化 API 和所有逻辑实现的“引擎”
测试 Rush 构建
完成代码修复并构建分支后(如一般 贡献 说明中所述),您将需要测试 Rush 的开发版本。
Rush 具有名为 **版本选择器** 的机制,它从 **rush.json** 中读取 rushVersion
,然后自动安装并调用该特定版本的引擎。因此,如果我们启动您构建的 @microsoft/rush
,它实际上不会运行您修改的代码。为了绕过版本选择器,我们需要直接调用 @microsoft/rush-lib
引擎
cd rushstack/libraries/rush-lib
node ./lib/start.js --help
如果您想从其他位置轻松调用您的测试版本,我们建议您创建一个 testrush
命令。
对于 Mac OS 或 Linux 上的 Bash
# Substitute the full path to your own build of rush-lib:
alias testrush="node ~/git/rushstack/libraries/rush-lib/lib/start.js"
对于 Windows,我们可以创建 testrush.cmd
并将其添加到我们的系统 PATH
中
@ECHO OFF
REM Substitute the full path to your own build of rush-lib:
node "C:\Git\rushstack\apps\rush-lib\lib\start.js" %*
调试 Rush
使用 VS Code 调试器调试 Rush 时,采用相同的方法。创建如下所示的调试器配置文件
rushstack/libraries/rush-lib/.vscode/launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Rush",
"program": "${workspaceFolder}/lib/start.js",
"args": [ "list", "--json" ], // <====== specify your Rush command line arguments here
"cwd": "(repo folder that you want to debug)", // <===== specify your target working folder here
// The Node.js debugger injects its own messages into the subprocess STDERR, which Rush
// may misinterpret as a build failure. You can uncomment this line as a workaround:
// "env": { "RUSH_ALLOW_WARNINGS_IN_SUCCESSFUL_BUILD": "1" }
}
]
}
保存此文件后,在 VS Code 中单击“视图” --> “运行”,然后从列表中选择您的“调试 Rush”配置。然后单击“运行” --> “开始调试” 以开始调试。断点和 TypeScript 源映射应该可以正常工作。
**提示:** 如果由于“警告”等原因,Rush 构建在调试器中似乎失败了,例如
Debugger attached.
Waiting for the debugger to disconnect......请查看上面关于 RUSH_ALLOW_WARNINGS_IN_SUCCESSFUL_BUILD 的注释代码。
不使用单元测试构建
Rush 使用 Heft 工具链构建。您可以直接调用 heft
命令行以获得更多选项。
# Full incremental build of Rush and its dependencies, including unit tests
rush build --to rush-lib --verbose
# Do a quick build of "rush-lib" only without unit tests
cd rushstack/libraries/rush-lib
rushx build