Clarify performance impact of project references on ts-server, and recommended usage of 'disableSourceOfProjectReferenceRedirect' or alternatives
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 文档
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- typescript
调研方向
先查看链接的 disableSourceOfProjectReferenceRedirect tsconfig 参考文档和 project references handbook 页面,然后检查 issue 42607 及链接的 Stack Overflow 问题。明确在 source redirects 保持启用时使用 project references 对 tsserver 性能的影响,并记录无需手动重新生成声明文件时针对 monorepo 的任何推荐设置或限制。
由索引模型根据 Issue 内容生成。
描述
From the docs (https://www.typescriptlang.org/tsconfig/#disableSourceOfProjectReferenceRedirect, https://www.typescriptlang.org/docs/handbook/project-references.html), it's clear that:
- project references enable
tsc -bfor improved type-checking performance - they can also improve tsserver (and therefore IDE) performance if declaration files are 'pre-emitted' and you enable
disableSourceOfProjectReferenceRedirect
In a monorepo, where most change units touch multiple projects, you want the behaviour of disableSourceOfProjectReferenceRedirect: false, ie you don't want to have to manually re-generate declaration files if you're changing a leaf project. Here's what's unclear: how is tsserver (and therefore IDE) performance affected by project references in this case? The docs should clarify:
- whether tsserver performance is expected to improve with project references and
disableSourceOfProjectReferenceRedirect: false, compared to without project references? - if not, whether there is a recommended setup to let tsserver benefit from project references without having to manually regenerate declaration files?
See also https://stackoverflow.com/questions/67093879/are-typescript-project-references-helpful-with-noemit (no real answer) and https://github.com/microsoft/TypeScript/issues/42607 (where according to the last benchmark by the submitter, project references actually slightly worsen performance, even after the patch).
- 主要语言
- TypeScript
- 星标
- 2.6k
- 派生
- 1.5k
- 平均合并
- 2 天 23 小时
- 30 天内合并 PR
- 5
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/TypeScript-Website 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
microsoft/TypeScript-Website#3607 ·
维护者通常 1 天内回复
-
Documentation for tsconfig.Plugins is wrong可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 1/5 1 小时以内 新手友好度 65/100
microsoft/TypeScript-Website#3039 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
microsoft/TypeScript-Website#2998 ·
维护者通常 1 天内回复
-
@typescript/vfs: createVirtualTypeScriptEnvironment stores a duplicate SourceFile per file that the language service never reads可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 3/5 1-2 天 新手友好度 68/100
microsoft/TypeScript-Website#3614 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
microsoft/TypeScript-Website#3583 · 3 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
查看 microsoft/TypeScript-Website 的全部 Issue