欢迎使用 Rush!
Rush 使得同时构建和发布多个 NPM 包的 JavaScript 开发者更容易。如果您希望将所有项目整合到一个仓库中,那么您来对地方了!Rush 是管理此方案的快速、专业解决方案。它为您提供
一次 NPM 安装:只需一步,Rush 就会将所有项目的依赖项安装到一个公共文件夹中。这不仅仅是仓库根目录中的一个“package.json”文件(这可能会导致您意外地
require()
兄弟项目的依赖项)。相反,Rush 使用符号链接为每个项目重建一个准确的“node_modules”文件夹,没有任何其他方法可能遇到的限制或故障。👉 此算法支持PNPM、NPM 和 Yarn 包管理器。
自动本地链接:在 Rush 仓库中,所有项目都会自动彼此链接。当您进行更改时,您可以在不发布任何内容的情况下看到下游效果,并且没有任何
npm link
问题。如果您不希望某些项目被链接,这也受支持。快速构建:Rush 检测您的依赖关系图,并按正确顺序构建您的项目。如果两个包不直接依赖于彼此,Rush 会将它们的构建并行化为独立的 NodeJS 进程(并在可读顺序中显示实时控制台输出)。在实践中,这种多进程方法可以提供比您单进程工具链中所有异步函数更显著的提速。
子集和增量构建:如果您只计划使用仓库中的几个项目,
rush rebuild --to <project>
仅对您的上游依赖项执行干净构建。在进行更改后,rush rebuild --from <project>
仅对受影响的下游项目执行干净构建。如果您的工具链已package-deps-hash 启用,rush build
提供强大的跨项目增量构建(也支持子集构建)。循环依赖项:如果您有用于构建锤子工厂工厂的锤子,Rush 可以为您提供帮助!当一个包间接依赖于自身较旧的版本时,循环中的项目使用上次发布的版本,而其他项目仍然获得最新的版本。
批量发布:当您需要进行发布时,Rush 可以检测哪些包发生了更改,自动调整所有相应的版本号,并在每个文件夹中运行
npm publish
。如果您愿意,可以配置服务器每小时自动运行rush publish
。变更日志跟踪:每当创建 PR 时,您可以要求开发者为受影响的项目提供一个主要/次要/修补日志条目。在发布过程中,这些更改将自动聚合到一个格式良好的CHANGELOG.md 文件中。
企业策略:希望在开发者将新库添加到 package.json 之前对其进行审查,但避免在已批准的情况下麻烦人们?希望强制所有项目都依赖于相同的库版本号?非专业的个人电子邮件地址是否意外地出现在您公司的 Git 历史记录中?当您有很多开发者和项目时,Rush 可以帮助维护一致的生态系统。
还有很多其他功能!Rush 是由Microsoft SharePoint 的平台团队创建的。我们每天从内部和公共 Git 仓库中构建数百个生产 NPM 包,用于第三方 SDK 和拥有数百万用户的实时服务。如果存在需要解决的重要包管理问题,它很可能最终成为 Rush 的一项功能。