本文档介绍了 TypeScript 仓库的结构、配置文件、开发工作流程和贡献者的最佳实践。有关 TypeScript 编译器架构的信息,请参阅 编译器核心,有关构建系统详细信息,请参阅 构建系统。
TypeScript 仓库遵循特定的组织结构,以支持 TypeScript 编译器及相关工具的开发、测试和维护。
来源: CONTRIBUTING.md1-176 README.md1-51 .gitignore1-67
TypeScript 源代码主要位于 src 目录中,其中包含几个关键子目录
| 目录 | 目的 |
|---|---|
src/compiler/ | 核心 TypeScript 编译器实现 |
src/services/ | 用于编辑器集成的 TypeScript 语言服务 |
src/server/ | TypeScript 语言服务器 (tsserver) |
src/lib/ | 标准库的声明文件 |
src/harness/ | 测试基础设施 |
src/lib/ 中的库声明文件定义了标准 JavaScript API、DOM 接口等的 TypeScript 类型定义。这些文件经过精心管理,因为它们定义了标准的类型化环境。
来源: CONTRIBUTING.md150-158 src/lib/README.md1-27
构建过程在 built/ 目录中生成编译后的输出
| 目录 | 描述 |
|---|---|
built/local/ | 本地构建的输出 |
lib/ | 库文件的最后已知良好 (LKG) 版本 |
构建系统会将 TypeScript 源代码编译到 built/local/ 目录中,其中包含构成 TypeScript 编译器和语言服务的已编译 JavaScript 文件。
来源: CONTRIBUTING.md150-170 .gitignore1-67
TypeScript 仓库在 tests/ 目录下组织了全面的测试系统
TypeScript 仓库包含几个重要的配置文件
| 文件 | 目的 |
|---|---|
tsconfig.json | TypeScript 编译器配置 |
.gitignore | 指定要从版本控制中排除的文件 |
package.json | NPM 包定义和脚本 |
scripts/tsconfig.json | 构建脚本的配置 |
.eslintrc.json | 代码 lint 规则 |
来源: .gitignore1-67 scripts/tsconfig.json1-26
该仓库支持使用 Visual Studio Code 进行开发,并提供了一个用于容器化开发的 devcontainer 配置
来源: CONTRIBUTING.md94-101 .devcontainer/devcontainer.json1-45 scripts/hooks/pre-commit1-5 scripts/hooks/post-checkout1-3 scripts/link-hooks.mjs1-28
TypeScript 仓库使用 hereby 命令行工具进行构建和测试
来源: CONTRIBUTING.md59-89 CONTRIBUTING.md175-267
TypeScript 项目遵循特定的贡献流程
来源: CONTRIBUTING.md48-170 .github/pull_request_template.md1-22
提交拉取请求到 TypeScript 仓库时,请确保您的 PR 符合以下要求
main 分支hereby runtests您的 PR 应包含
来源: CONTRIBUTING.md134-145 .github/pull_request_template.md1-22
测试是 TypeScript 仓库质量保证的关键部分
关于测试的关键点
tests/cases/ 子目录中添加一个 .ts 文件// @metaDataName: valuefileName 标签可以将部分内容划分为独立的编译单元来源: CONTRIBUTING.md212-224 CONTRIBUTING.md241-267
TypeScript 仓库有管理库声明文件的特殊流程
| 目录 | 目的 |
|---|---|
src/lib/ | 库声明文件的源位置 |
lib/ | 用于引导的最后已知良好版本 |
built/local/ | 库文件的构建版本 |
某些库文件是生成的,不应直接修改
src/lib/dom.generated.d.tssrc/lib/webworker.generated.d.ts对于这些文件,应将更改定向到 TSJS-lib-generator repository
来源: CONTRIBUTING.md150-170 src/lib/README.md1-27
TypeScript 存储库使用 GitHub Actions 进行持续集成和交付
该存储库还有用于问题管理和维护任务的工作流。
来源: .github/workflows/pr-modified-files.yml1-136 .github/workflows/close-issues.yml1-51
tests/cases/ 下的相应子目录中来源: CONTRIBUTING.md146-149 scripts/hooks/pre-commit1-5