@
MinonHeart #4
> 两边都是通过 cache 提速的,另外 TPR 的项目依赖需要手动编写( tsconfig.json ),和 package.deps 重复了,维护不会很麻烦吗?(有看过一些同步的工具,但是还是挺麻烦的)
在我的项目中,维护 tsconfig.json 的 reference 用的是自己开发的工具
https://github.com/ZeekoZhu/js-prelude/blob/main/packages/ts-sync-ref/README.md ,把这个包装成 nx executor 后,就方便很多了。
> js 和 ts 混合项目,TPR 怎么处理?
TPR 只是用来加速 tsc 而已,tsc 查找类型定义的方式可以通过给 tsc -b/-p 命令加上 --traceResolution 来 debug 。你的这种做法看起来也没啥问题。另一种做法是通过 package.types 字段指定 .d.ts 文件。
> TPR 项目中有引用图片/SVG 等这些二进制资源怎么处理?
我把 tsc 当作 type checker 用的,生成 js (包括 copy assets )用的是 vite ,跟 tsc 没有任何关系。另外,build mode 提升构建速度的方式是复用类型定义,也跟二进制文件没有关系。
> TPR 在 watch 和 build 上有很大的优势吗?
这里我引用一下 TypeScript 的文档:
> By separating into multiple projects, you can greatly improve the speed of typechecking and compiling, reduce memory usage when using an editor, and improve enforcement of the logical groupings of your program.
如文档所述,启用 Project Reference 后,tsc 跟 tsserver(language server) 都会变得更加高效。我实际测试下来,类型检查速度能提速不少;编辑器的话,我平常用 WebStorm ,这个 IDE 根本不用 lsp ,所以没有感觉到内存占用的减少。