Rush StackShopBlogEvents
Skip to main content

创建一个新的仓库

创建一个新的仓库该教程讲述了将几个项目合并成一个新的 Rush monorepo 的过程(如果你想看最终结果,可以在 GitHub 上查看 rush 示例)。

假设我们有三个项目目录:

  • my-app: 一个页面应用。

  • my-controls: 页面应用使用的控件库。

  • my-toolchain: NodeJS 实现的用于编译其他项目的工具。

起初每个项目在自身的目录下,它们都是通过这样的繁琐的方式来构建的:

~$ cd my-toolchain
~/my-toolchain$ npm run build
~/my-toolchain$ npm link
~/my-toolchain$ cd ../my-controls
~/my-controls$ npm link my-toolchain
~/my-controls$ npm run build
~/my-controls$ npm link
~/my-app$ cd ../my-app
~/my-app$ npm link my-toolchain
~/my-app$ npm link my-controls
~/my-app$ npm run build

现在让我们将其打造为 Rush 项目

步骤 1: 检查你的 Rush 版本

开始之前,首先确定全局安装了最新的 Rush 版本:

~$ npm install -g @microsoft/rush

注意:如果由于缺少权限而导致访问 NPM 全局目录失败,可以查阅 修复 NPM 配置

步骤 2: 使用 "rush init" 初始化你的仓库

假定你已经创建了一个空的 GitHub 仓库,该仓库用于拷贝上述项目。先将仓库克隆到本地,然后运行 rush init 来生成 Rush 的配置文件:

~$ git clone https://github.com/my-team/my-repo
~$ cd my-repo
~/my-repo$ rush init

它将会生成以下文件:(更多信息可查阅 配置文件参考

文件用途
rush.jsonRush 内主要的配置文件
.gitattributes(如果你不用 Git 可以删除)
告诉 Git 不要对哪些 shrinkwrap 文件进行合并,因为该操作并不安全
.gitignore(如果你不用 Git 可以删除)
告知 Git 不要跟踪哪些文件
.travis.yml(如果你不用 Travis 可以删除)
配置 Travis CI 服务来在 PR 中使用 Rush
common/config/rush/.npmrcRush 用该文件配置源,无论是 PNPM, NPM 或者 Yarn
common/config/rush/command-line.json用于自定义 Rush 的命令行命令或参数
common/config/rush/common-versions.json用于指定 NPM 包的版本,它影响 Rush 仓库下所有项目
common/config/rush/pnpmfile.js(如果不使用 PNPM 可以删除)
用于解决 package.json 文件下错误的依赖关系
common/config/rush/version-policies.json用于定义发布配置

注意:如果你的分支中已经存在这些文件,rush init 将会发出警告并且不会覆盖已有的文件。

接着,将生成的文件添加到 Git 仓库并且提交到你的分支:

~/my-repo$ git add .
~/my-repo$ git commit -m "Initialize Rush repo"

步骤 3: 自定义配置

这些模版文件有大量的文档和注释的示例。我们建议你仔细查看它们,以便于你能够理解基本的选项和功能。

你可以随时修改你的选项,但是 rush.json 中有一些配置项需要一些了解:

  • 选择包管理器: 模版默认使用 PNPM,但是你也可以使用 NPM 或者 Yarn. 可以参考 NPM vs PNPM vs Yarn.

  • 检查你的 Rush 版本:确保 rushVersion 是最新版本,版本列表可查看 NPM 源.

  • 检查其他的版本属性: 同样需要检查下其他的版本字段,例如 pnpmVersion, npmVersion, yarnVersion, nodeSupportedVersionRange

  • 是否使用“类别目录”模型:参考 rush.json 中的 projectFolderMinDepthprojectFolderMaxDepth 的注释,并计划好 monorepo 内的项目目录如何组织。

  • 配置源的访问权限:初始的 .npmrc 被配置为使用公开的 NPM 源。如果你将要使用私有源,你应该更新 common/config/rush/.npmrc 文件。