rush build和tsc -b一起玩好吗?

问题描述

我正在使用项目参考和增量构建来探索rush / PNPM和Typescript,但对于两者中哪一个最适合管理增量构建,我有些困惑。

如果我使用内置命令来rush build进行增量构建,我认为rush可以从所有已知项目的package.json声明中正确识别依赖项,并运行每个项目的build脚本他们中的依依顺序。如果每个打字稿项目的build脚本是./node_modules/.bin/tsc -b .,那么树上的每个依赖项都将按照依赖关系顺序进行构建。

其中,tsc还将根据其references path列表评估package.json依赖项。理想情况下,它将(?)认识到其依赖关系的早期独立构建使它们成为当前的并且不需要重新构建,然后仅将直接项目的代码作为其rush build调用的构建的一部分进行构建。如果这是可靠且稳定的,那么看来充其量似乎没有必要进行依赖树评估,对吧?

我尝试在命令line.json中将rushbuild bulk命令覆盖到ignoreMissingScript,并且仅在最顶层应用程序的package.json中定义"build": "./node_modules/.bin/tsc -b ."。 (其想法是在子项目中使用替代项build-me或其他子项目,以防万一我出于某种原因只真正重建其中一个及其依赖项。)由于批量命令的性质,rush发出了有关跳过构建和丢失脚本的消息,这可能会误导开发人员。另外,我不认为所有项目都在编译中-例如,我没有看到生成的js文件-也许这是一个不相关的问题。

我看不到任何简单的rush配置来延迟输入打字稿-我们不允许将build命令行重写为global样式的shell命令。我觉得我真的只希望rush用于包管理而不是脚本运行(因为它太受限制了)。但是,我也不能轻易阻止rush build支持以其他方式运行主项目的打字稿增量构建。我很惊讶地没有找到任何相关的搜索结果,因为它们都是最前沿的Microsoft项目。我缺少基本的东西吗?

解决方法

来自https://github.com/microsoft/rushstack/issues/2368

现在两者不能直接互操作。

如果您运行Rush增量构建命令(如OOB紧急构建 命令),Rush将会重建包含文件的项目 .gitignored自上次命令以来其哈希值已更改 已运行。

Heft的增量TypeScript构建仅重建单个TS文件 自上次运行heft build以来,这些都没有改变。如果你 不要在运行项目之前大量运行--clear-cache build命令,如果有效,则构建将是增量的 项目的Heft构建缓存文件夹中存在增量状态 (/.heft/build-cache)。不管发生什么 是否运行增量Rush构建命令。

这有意义吗?