本文档详细介绍了 JavaScript 和 TypeScript 开发环境中特定的 gitignore 模式。它涵盖了在使用这些语言及其关联的框架和工具时,通常应从版本控制中排除的文件和目录。有关 Node.js 特定框架的信息,请参阅 Node.js 和 JavaScript 框架。
JavaScript 和 TypeScript 项目在开发、构建和测试过程中会生成各种文件,这些文件不应提交到版本控制。其中包括依赖项目录、构建产物、缓存文件、日志和特定于环境的配置文件。
JavaScript 和 TypeScript 项目中最大的目录通常是依赖项目录。这些目录应始终被忽略,因为它们可以从包清单中恢复。
| 模式 | 描述 |
|---|---|
node_modules/ | Node.js 包依赖项目录 |
jspm_packages/ | JSPM 包管理器依赖项 |
bower_components/ | Bower 包管理器依赖项(遗留) |
web_modules/ | Snowpack 依赖项目录 |
.yarn/cache | Yarn v2 缓存目录 |
.pnp.* | Plug'n'Play 依赖项解析文件 |
来源: Node.gitignore41-43 Node.gitignore32-33 Node.gitignore45-47 Node.gitignore132-136
JavaScript 和 TypeScript 的构建过程会产生已编译的输出,这些输出应从源代码控制中排除。
| 模式 | 描述 |
|---|---|
build/Release | 已编译的二进制 Node.js 插件 |
dist/ | 捆绑代码的标准输出目录 |
*.tgz | npm 包分发文件 |
.next, out/ | Next.js 构建输出 |
.nuxt | Nuxt.js 构建输出 |
.vuepress/dist | VuePress 构建输出 |
.docusaurus | Docusaurus 生成的文件 |
来源: Node.gitignore39 Node.gitignore92 Node.gitignore70 Node.gitignore86-92 Node.gitignore100-114
TypeScript 编译会生成一些应被排除的特定文件。
| 模式 | 描述 |
|---|---|
*.tsbuildinfo | TypeScript 增量编译缓存 |
各种构建工具和 linters 会维护缓存目录以提高性能。
| 模式 | 描述 |
|---|---|
.npm | npm 缓存目录 |
.eslintcache | ESLint 缓存 |
.stylelintcache | Stylelint 缓存 |
.rpt2_cache/, .rts2_cache_cjs/, 等。 | Microbundle/Rollup TypeScript 缓存 |
.cache, .parcel-cache | Parcel 打包器缓存 |
.fusebox/ | FuseBox 缓存 |
来源: Node.gitignore51-65 Node.gitignore82-84 Node.gitignore119-120
下图展示了 JavaScript/TypeScript 项目的开发工作流程以及每个阶段应排除的文件。
来源: Node.gitignore41-43 Node.gitignore75-84 Node.gitignore1-8 Node.gitignore22-27 Node.gitignore92 Node.gitignore48-49 Node.gitignore117-118
各种 JavaScript 工具产生的调试日志应从版本控制中排除。
| 模式 | 描述 |
|---|---|
logs, *.log | 通用日志文件 |
npm-debug.log* | npm 调试日志 |
yarn-debug.log*, yarn-error.log* | Yarn 调试日志 |
lerna-debug.log* | Lerna monorepo 工具日志 |
.pnpm-debug.log* | pnpm 调试日志 |
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | Node.js 诊断报告 |
来源: Node.gitignore1-8 Node.gitignore10-11
环境变量文件通常包含不应提交的机密和特定于环境的设置。
| 模式 | 描述 |
|---|---|
.env | 通用环境变量 |
.env.development.local | 本地开发环境变量 |
.env.test.local | 本地测试环境变量 |
.env.production.local | 本地生产环境变量 |
.env.local | 本地环境覆盖 |
现代 JavaScript 框架有特定的构建目录,应该被忽略
JavaScript 和 TypeScript 项目通常使用各种测试框架,这些框架会生成覆盖率报告。这些应该被排除,因为它们特定于单个测试运行。
| 模式 | 描述 |
|---|---|
lib-cov | JSCover 生成的目录 |
coverage, *.lcov | 测试覆盖率报告 |
.nyc_output | NYC (Istanbul) 输出 |
JavaScript 和 TypeScript 开发严重依赖包管理器,每个包管理器都有自己的文件需要被排除
| 包管理器 | 排除的模式 |
|---|---|
| npm | node_modules/, .npm, npm-debug.log*, *.tgz |
| Yarn v1 | node_modules/, yarn-debug.log*, yarn-error.log*, .yarn-integrity |
| Yarn v2+ | .yarn/cache, .yarn/unplugged, .yarn/build-state.yml, .yarn/install-state.gz, .pnp.* |
| pnpm | node_modules/, .pnpm-debug.log* |
| Bower (旧版本) | bower_components/ |
来源: Node.gitignore1-8 Node.gitignore41-43 Node.gitignore51-52 Node.gitignore70-73 Node.gitignore132-136 Node.gitignore32-33
.env 文件都被忽略(示例除外)虽然大多数模式适用于 JavaScript 和 TypeScript 项目,但 TypeScript 还有一些额外的注意事项
| TypeScript 特定模式 | 描述 |
|---|---|
*.tsbuildinfo | TypeScript 增量构建信息文件 |
tsconfig.*.json | TypeScript 配置通常应该提交,但变体配置可以被忽略 |
TypeScript 项目中的 *.js | 一些项目会忽略从 TypeScript 编译生成的 JavaScript 文件 |
正确的 gitignore 配置对于 JavaScript 和 TypeScript 项目至关重要,可以防止不必要的文件弄乱存储库,并避免提交敏感信息。此处记录的模式提供了全面的起点,可以根据特定的项目需求和工具选择进行自定义。