菜单

Node.js 和 JavaScript 框架

相关源文件

目的与范围

本文档详细介绍了 GitHub gitignore 仓库中 Node.js gitignore 模板的结构和组成部分。它涵盖了 Node.js 项目和 JavaScript 框架中用于排除文件和目录的模式,重点关注依赖管理、构建产物、环境配置和特定于框架的输出。有关特定于 JavaScript 和 TypeScript 语言的模式信息,请参阅JavaScript 和 TypeScript

Node.js Gitignore 模板概述

Node.js gitignore 模板提供了用于排除在使用 Node.js 和 JavaScript 框架进行版本控制时应提交的常见文件和目录的模式。这包括包管理器文件、日志、环境变量、缓存和构建输出。

来源:Node.gitignore1-136

文件类别

日志和诊断信息

该模板排除了各种日志文件,以防止存储库因临时调试信息而显得混乱。

模式描述
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]*.jsonNode.js 诊断报告11

来源:Node.gitignore1-11

运行时数据和进程信息

这些模式会排除运行时生成的临时文件。

pids
*.pid
*.seed
*.pid.lock

来源:Node.gitignore13-17

测试和代码覆盖率

该模板会排除由测试框架和代码覆盖率工具生成的文件和目录。

工具排除的模式目的
JSCoverlib-cov已注入的库文件
Istanbulcoverage, *.lcov测试覆盖率报告
NYC.nyc_outputNYC (Istanbul CLI) 覆盖率报告

来源:Node.gitignore19-27

依赖管理

包管理器目录

Node.js gitignore 模板中最关键的部分之一是排除依赖目录。这些目录包含第三方包,并且可能非常大,不适合版本控制。

来源:Node.gitignore32-47

依赖工具模式

该模板包含各种依赖管理工具的模式

工具排除的模式
Grunt.grunt30
Bowerbower_components33
node-waf.lock-wscript36
Node.js 插件build/Release39
npmnode_modules/42
JSPMjspm_packages/43
Snowpackweb_modules/46

来源:Node.gitignore29-47

缓存目录

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

来源:Node.gitignore49-67

环境配置

环境变量和配置文件通常包含 API 密钥等敏感信息,不应提交到版本控制。

.env
.env.development.local
.env.test.local
.env.production.local
.env.local

来源:Node.gitignore75-80

JavaScript 框架特定模式

框架构建目录

该模板包含许多流行 JavaScript 框架的模式

来源:Node.gitignore86-115

特定于框架的模式详情

框架排除的模式描述
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

来源:Node.gitignore82-115

无服务器和特定于服务

该模板包含无服务器框架和服务的开发模式

.serverless/     # Serverless framework directories
.fusebox/        # FuseBox bundler cache
.dynamodb/       # DynamoDB Local files
.tern-port       # TernJS port file

来源:Node.gitignore117-126

包管理器特定模式

Yarn v2 特定模式

使用 Yarn v2 (Berry) 时,还需要排除一些新文件

.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

来源:Node.gitignore131-136

与开发工作流程的集成

Node.js gitignore 模板旨在与典型的 Node.js 开发工作流程配合使用

来源:Node.gitignore41-43 Node.gitignore75-80 Node.gitignore90-92 Node.gitignore23-27

常见挑战与解决方案

本地环境配置

为了在团队环境中处理环境变量,同时保护敏感信息

  1. 使用 .env.example 文件(不排除)来记录必需的变量
  2. 排除所有实际的 .env 文件
  3. 使用特定于环境的文件(.env.development.local.env.production.local)进行本地覆盖

来源:Node.gitignore75-80

包锁定文件

包锁定文件(如 package-lock.jsonyarn.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.gitignore95-98

结论

Node.js gitignore 模板为排除 Node.js 和 JavaScript 框架项目中的临时文件、构建产物、依赖项和环境配置提供了全面的覆盖。通过使用此模板,开发人员可以维护更整洁的存储库,并避免提交应在构建过程中生成或包含敏感信息的文件。