菜单

JavaScript 和 TypeScript

相关源文件

目的与范围

本文档详细介绍了 JavaScript 和 TypeScript 开发环境中特定的 gitignore 模式。它涵盖了在使用这些语言及其关联的框架和工具时,通常应从版本控制中排除的文件和目录。有关 Node.js 特定框架的信息,请参阅 Node.js 和 JavaScript 框架

JavaScript 和 TypeScript 生态系统概述

JavaScript 和 TypeScript 项目在开发、构建和测试过程中会生成各种文件,这些文件不应提交到版本控制。其中包括依赖项目录、构建产物、缓存文件、日志和特定于环境的配置文件。

来源: Node.gitignore1-136

按类别划分的常见模式

依赖管理

JavaScript 和 TypeScript 项目中最大的目录通常是依赖项目录。这些目录应始终被忽略,因为它们可以从包清单中恢复。

模式描述
node_modules/Node.js 包依赖项目录
jspm_packages/JSPM 包管理器依赖项
bower_components/Bower 包管理器依赖项(遗留)
web_modules/Snowpack 依赖项目录
.yarn/cacheYarn v2 缓存目录
.pnp.*Plug'n'Play 依赖项解析文件

来源: Node.gitignore41-43 Node.gitignore32-33 Node.gitignore45-47 Node.gitignore132-136

构建工件

JavaScript 和 TypeScript 的构建过程会产生已编译的输出,这些输出应从源代码控制中排除。

模式描述
build/Release已编译的二进制 Node.js 插件
dist/捆绑代码的标准输出目录
*.tgznpm 包分发文件
.next, out/Next.js 构建输出
.nuxtNuxt.js 构建输出
.vuepress/distVuePress 构建输出
.docusaurusDocusaurus 生成的文件

来源: Node.gitignore39 Node.gitignore92 Node.gitignore70 Node.gitignore86-92 Node.gitignore100-114

TypeScript 特定文件

TypeScript 编译会生成一些应被排除的特定文件。

模式描述
*.tsbuildinfoTypeScript 增量编译缓存

来源: Node.gitignore48-49

缓存目录

各种构建工具和 linters 会维护缓存目录以提高性能。

模式描述
.npmnpm 缓存目录
.eslintcacheESLint 缓存
.stylelintcacheStylelint 缓存
.rpt2_cache/, .rts2_cache_cjs/, 等。Microbundle/Rollup TypeScript 缓存
.cache, .parcel-cacheParcel 打包器缓存
.fusebox/FuseBox 缓存

来源: Node.gitignore51-65 Node.gitignore82-84 Node.gitignore119-120

JavaScript/TypeScript 项目中的开发工作流程

下图展示了 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]*.jsonNode.js 诊断报告

来源: Node.gitignore1-8 Node.gitignore10-11

环境配置和机密

环境变量文件通常包含不应提交的机密和特定于环境的设置。

模式描述
.env通用环境变量
.env.development.local本地开发环境变量
.env.test.local本地测试环境变量
.env.production.local本地生产环境变量
.env.local本地环境覆盖

来源: Node.gitignore75-80

JavaScript 框架及其构建输出

现代 JavaScript 框架有特定的构建目录,应该被忽略

来源: Node.gitignore86-114

测试和代码覆盖率

JavaScript 和 TypeScript 项目通常使用各种测试框架,这些框架会生成覆盖率报告。这些应该被排除,因为它们特定于单个测试运行。

模式描述
lib-covJSCover 生成的目录
coverage, *.lcov测试覆盖率报告
.nyc_outputNYC (Istanbul) 输出

来源: Node.gitignore19-27

与包管理器的集成

JavaScript 和 TypeScript 开发严重依赖包管理器,每个包管理器都有自己的文件需要被排除

包管理器排除的模式
npmnode_modules/, .npm, npm-debug.log*, *.tgz
Yarn v1node_modules/, yarn-debug.log*, yarn-error.log*, .yarn-integrity
Yarn v2+.yarn/cache, .yarn/unplugged, .yarn/build-state.yml, .yarn/install-state.gz, .pnp.*
pnpmnode_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

JavaScript/TypeScript Gitignore 配置的最佳实践

  1. 从标准模板开始:从 Node.gitignore 模板
  2. 添加框架特定的模式:包含特定框架(Next.js、Vue 等)的模式
  3. 考虑打包器的输出:不同的打包器(Webpack、Rollup、Parcel)可能有独特的输出目录
  4. 环境管理:确保所有 .env 文件都被忽略(示例除外)
  5. 编辑器特定文件:与您团队工具的编辑器特定忽略模式结合使用

来源: Node.gitignore1-136

TypeScript 与 JavaScript 的特定注意事项

虽然大多数模式适用于 JavaScript 和 TypeScript 项目,但 TypeScript 还有一些额外的注意事项

TypeScript 特定模式描述
*.tsbuildinfoTypeScript 增量构建信息文件
tsconfig.*.jsonTypeScript 配置通常应该提交,但变体配置可以被忽略
TypeScript 项目中的 *.js一些项目会忽略从 TypeScript 编译生成的 JavaScript 文件

来源: Node.gitignore48-49

结论

正确的 gitignore 配置对于 JavaScript 和 TypeScript 项目至关重要,可以防止不必要的文件弄乱存储库,并避免提交敏感信息。此处记录的模式提供了全面的起点,可以根据特定的项目需求和工具选择进行自定义。