本文档详细介绍了 GitHub gitignore 仓库中 Node.js gitignore 模板的结构和组成部分。它涵盖了 Node.js 项目和 JavaScript 框架中用于排除文件和目录的模式,重点关注依赖管理、构建产物、环境配置和特定于框架的输出。有关特定于 JavaScript 和 TypeScript 语言的模式信息,请参阅JavaScript 和 TypeScript。
Node.js gitignore 模板提供了用于排除在使用 Node.js 和 JavaScript 框架进行版本控制时应提交的常见文件和目录的模式。这包括包管理器文件、日志、环境变量、缓存和构建输出。
该模板排除了各种日志文件,以防止存储库因临时调试信息而显得混乱。
| 模式 | 描述 | 行 |
|---|---|---|
logs | 日志目录 | 2 |
*.log | 任何日志文件 | 3 |
npm-debug.log* | npm 调试日志 | 4 |
yarn-debug.log* | Yarn 调试日志 | 5 |
yarn-error.log* | Yarn 错误日志 | 6 |
lerna-debug.log* | Lerna 调试日志 (monorepo 工具) | 7 |
.pnpm-debug.log* | pnpm 调试日志 | 8 |
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json | Node.js 诊断报告 | 11 |
这些模式会排除运行时生成的临时文件。
pids
*.pid
*.seed
*.pid.lock
该模板会排除由测试框架和代码覆盖率工具生成的文件和目录。
| 工具 | 排除的模式 | 目的 |
|---|---|---|
| JSCover | lib-cov | 已注入的库文件 |
| Istanbul | coverage, *.lcov | 测试覆盖率报告 |
| NYC | .nyc_output | NYC (Istanbul CLI) 覆盖率报告 |
Node.js gitignore 模板中最关键的部分之一是排除依赖目录。这些目录包含第三方包,并且可能非常大,不适合版本控制。
该模板包含各种依赖管理工具的模式
| 工具 | 排除的模式 | 行 |
|---|---|---|
| Grunt | .grunt | 30 |
| Bower | bower_components | 33 |
| node-waf | .lock-wscript | 36 |
| Node.js 插件 | build/Release | 39 |
| npm | node_modules/ | 42 |
| JSPM | jspm_packages/ | 43 |
| Snowpack | web_modules/ | 46 |
Node.js 生态系统中的各种工具会创建应该被排除的缓存目录
.npm # npm cache
.eslintcache # ESLint cache
.stylelintcache # Stylelint cache
.rpt2_cache/ # Rollup TypeScript cache
.rts2_cache_cjs/ # Rollup TypeScript cache (CommonJS)
.rts2_cache_es/ # Rollup TypeScript cache (ES modules)
.rts2_cache_umd/ # Rollup TypeScript cache (UMD)
.node_repl_history # Node.js REPL history
环境变量和配置文件通常包含 API 密钥等敏感信息,不应提交到版本控制。
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
该模板包含许多流行 JavaScript 框架的模式
| 框架 | 排除的模式 | 描述 | 行 |
|---|---|---|---|
| Parcel | .cache, .parcel-cache | 打包器缓存目录 | 82-84 |
| Next.js | .next, out | 构建输出目录 | 86-88 |
| Nuxt.js | .nuxt, dist | 构建和生成输出 | 90-92 |
| Gatsby | .cache/, (public) | 缓存和可选的公共构建输出 | 95-98 |
| VuePress | .vuepress/dist, .temp, .cache | 构建输出和缓存 | 100-105 |
| VitePress | **/.vitepress/dist, **/.vitepress/cache | 构建输出和缓存 | 107-111 |
| Docusaurus | .docusaurus | 缓存和生成的文件 | 113-114 |
该模板包含无服务器框架和服务的开发模式
.serverless/ # Serverless framework directories
.fusebox/ # FuseBox bundler cache
.dynamodb/ # DynamoDB Local files
.tern-port # TernJS port file
使用 Yarn v2 (Berry) 时,还需要排除一些新文件
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
Node.js gitignore 模板旨在与典型的 Node.js 开发工作流程配合使用
来源:Node.gitignore41-43 Node.gitignore75-80 Node.gitignore90-92 Node.gitignore23-27
为了在团队环境中处理环境变量,同时保护敏感信息
.env.example 文件(不排除)来记录必需的变量.env 文件.env.development.local、.env.production.local)进行本地覆盖包锁定文件(如 package-lock.json 和 yarn.lock)不会被排除,因为它们确保了跨环境的一致安装。这些文件应提交到版本控制。
某些框架(如 Gatsby)需要条件性的 gitignore 配置。例如,用户必须根据其项目设置决定是否忽略 public 目录
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.net.cn/blog/next-9-1#public-directory-support
# public
Node.js gitignore 模板为排除 Node.js 和 JavaScript 框架项目中的临时文件、构建产物、依赖项和环境配置提供了全面的覆盖。通过使用此模板,开发人员可以维护更整洁的存储库,并避免提交应在构建过程中生成或包含敏感信息的文件。