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

推荐设置

仓库运行起来后,我们建议在 **rush.json** 中启用一些设置。这些更严格的设置有助于提高仓库健康状况并减少维护问题。它们默认情况下是禁用的,因为它们有时需要对代码库进行一些修复,并且可能不适合所有情况。

repository.url

如果你的仓库使用 `rush change` 命令跟踪变更日志,我们强烈建议在 **rush.json** 中设置 `repository.url`。这将确保 `rush change` 能够准确地找到用于比较的基础分支,尤其是在开发者的仓库已从主仓库 "分叉" 的情况下。

**rush.json** 中的示例摘录

  "repository": {
// Replace this with the URL that you use when running "git clone" for your repo
"url": "https://github.com/microsoft/rush-example"
}

ensureConsistentVersions

我们建议在 **rush.json** 中将 `ensureConsistentVersions` 设置为 `true`。这将导致 Rush 在调用以下任何命令时自动执行 `rush check` 验证

  • rush install
  • rush update
  • rush link
  • rush version
  • rush publish

此验证会检查每个项目的 **package.json** 文件,并确保所有依赖项在整个仓库中版本一致。这通常是可取的,并且避免了许多与版本不一致相关的问题。

有时,多个版本是可取的。例如,你可能希望分阶段将项目升级到新的 TypeScript 编译器,而不是一次性升级所有项目。在此过渡期间,你可能需要在仓库中安装两个不同的 `typescript` 版本。对于这些例外情况,你可以在 **common-versions.json** 的 `allowedAlternativeVersions` 部分添加一个条目。

注意:在早期的 Rush 版本中,CI 脚本示例包含 `rush check` 作为构建步骤。`ensureConsistentVersions` 设置消除了对此的需要。如果启用 `ensureConsistentVersions`,则可以从 CI 构建步骤中删除 `rush check`。

strictPeerDependencies

如果使用 PNPM 包管理器,我们强烈建议在 **pnpm-config.json** 中将 `strictPeerDependencies` 设置为 `true`。这将导致 Rush 在安装过程中使用 PNPM 的 `--strict-peer-dependencies` 选项。有了这种保护,`rush install` 将在存在未满足的同级依赖项时失败,这是一种无效的状态,会导致构建失败或不兼容的依赖项版本。(出于历史原因,JavaScript 包管理器通常不将此无效状态视为错误。)