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

贡献

Rush 在 Rush Stack 项目家族的单一仓库中开发

     https://github.com/microsoft/rushstack

rushstack-websites GitHub 仓库中为文档网站做出贡献。

有关构建 Rush 的一般说明和提交 PR 的指南,请阅读 Rush Stack 单一仓库的 贡献 文档。

相关的单一仓库项目文件夹是

测试 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