菜单

开发

相关源文件

本指南旨在帮助希望为 nodemon 项目贡献的开发者。它涵盖了 nodemon 代码库的设置过程、开发工作流程、测试方法和贡献指南。有关如何在自己的项目中使用 nodemon 的信息,请参阅概述高级用法

设置开发环境

要开始开发 nodemon,你需要设置本地环境。

先决条件

  • Node.js(版本 10 或更高)
  • Git

安装步骤

  1. 克隆仓库

  2. 安装依赖项

  3. 设置 Git 钩子:项目使用 Husky 来强制执行提交消息格式并在推送前运行测试。

来源:package.json11-13 package.json32-43

开发工作流

为 nodemon 贡献的典型工作流程遵循以下步骤

请注意,在修复错误时,应首先提交一个展示该问题的失败测试,然后在一个单独的提交中提交修复。

来源:.github/CONTRIBUTING.md17-31

代码库结构

nodemon 项目由几个核心组件组成,它们协同工作以提供文件监控和应用程序重启功能。

来源:package.json8-10 package.json30-31

测试

Nodemon 使用 Mocha 进行单元和集成测试。测试文件位于 test 目录下。

运行测试

  • 运行所有测试

  • 运行特定测试

测试系统包含用于创建 fixtures、在受控环境中运行 nodemon 以及验证其行为的实用程序。

编写测试

编写测试时,请遵循以下指南:

  1. 镜像你正在测试的代码的目录结构
  2. 测试成功和失败两种情况
  3. 修复错误时,首先编写一个展示该问题的失败测试
  4. 考虑跨平台兼容性(Windows/Mac/Linux)

来源:package.json34-40 test/misc/sigint.test.js1-56 test/fixtures/sigint.js1-9

代码风格和标准

Nodemon 使用 ESLint 和 JSHint 来维护代码质量和一致性。

代码 Linting

  • 运行代码检查

风格指南

  • 字符串使用单引号
  • 保持正确缩进(2个空格)
  • 遵循驼峰命名法
  • 避免未使用变量
  • 为函数添加 JSDoc 注释

来源:.eslintrc.json1-19 .jshintrc1-16 .github/CONTRIBUTING.md17-19

提交指南

Nodemon 使用 Conventional Commits 进行标准化提交消息。这使得自动生成变更日志成为可能。

提交消息格式

提交必须遵循 Angular 风格格式:

<type>: <subject>

[optional body]

其中 <type> 是以下之一:

  • feat:新功能
  • fix:错误修复
  • docs:文档更改
  • style:代码风格更改(格式、缺失分号)
  • refactor:既不修复错误也不添加功能的代码更改
  • perf:性能改进
  • test:添加或更新测试
  • chore:构建过程或辅助工具的更改

项目使用 commitlint 自动强制执行此格式。

来源:.github/CONTRIBUTING.md3-15 commitlint.config.js1-3 package.json33

拉取请求流程

提交拉取请求时

  1. 确保所有测试通过
  2. 为新功能添加测试
  3. 根据需要更新文档
  4. 遵循提交消息指南
  5. 积极回应代码审查反馈

特殊注意事项

  • 除非有充分理由,否则通常不鼓励添加新的命令行选项
  • 考虑跨平台兼容性
  • 报告问题时,请包含 nodemon --dump 输出

来源:.github/CONTRIBUTING.md21-31 .github/ISSUE_TEMPLATE.md1-27

持续集成

项目使用持续集成来确保代码质量并在不同环境中进行测试。

CI 流程

发布流程

Nodemon 使用 semantic-release 自动化版本管理和包发布。这基于 Angular 风格的提交消息,它决定了所需版本升级的类型。

来源:package.json41-43 package.json55 package.json70

调试技巧

调试 nodemon 时:

  1. 使用 --dump 标志获取 nodemon 配置的详细信息

  2. 设置 DEBUG 环境变量以获取额外的调试信息

  3. 要在本地测试更改,请将本地 nodemon 链接到另一个项目

来源:.github/ISSUE_TEMPLATE.md25-26

跨平台考量

Nodemon 旨在跨不同平台(包括 Windows、macOS 和 Linux)工作。在开发时,考虑这些差异非常重要,尤其是在以下方面:

  • 文件路径处理
  • 进程管理
  • 文件系统事件
  • 终端行为

鼓励在多个平台进行测试,以确保兼容性。

来源:.github/CONTRIBUTING.md30-31

遵循这些指南,你将能够有效地为 nodemon 项目做出贡献,并帮助改进这个对 Node.js 社区有价值的工具。