本文档描述了标准 Go 项目布局中支持目录的用途和用法。支持目录是专门的文件夹,用于促进开发、测试、文档和示例,但它们不直接构成应用程序的核心功能。有关核心代码目录的信息,请参阅 核心目录结构。
支持目录通过提供完整软件项目所需的基础设施来补充主要的应用程序代码。它们有助于在操作代码和支持资源之间保持清晰的隔离,使项目更易于维护和导航。
/test)/test 目录包含额外的外部测试应用程序和测试数据。此目录与通常与代码一起位于 /cmd、/internal 和 /pkg 中的单元测试分开。它用于可能需要特殊设置、附加测试数据或与外部系统集成的较大测试。
主要特性
/test/data 或 /test/testdata 的目录. 或 _ 开头的目录或文件也会被 Go 忽略/docs)/docs 目录包含设计文档、用户手册以及 GoDoc 生成的标准 API 文档以外的其他文档。您可以在此处放置架构概述、使用指南和其他人类可读的项目说明。
主要特性
/tools)/tools 目录包含项目的支持工具。这些工具可能包括代码生成器、基准测试工具或其他有助于开发任务的应用程序。此目录中的工具可以导入 /pkg 和 /internal 目录中的代码。
主要特性
/pkg 和 /internal 的代码/examples)/examples 目录包含项目公共 API 的示例应用程序或用法示例。这些示例可以帮助用户了解如何正确使用项目中的库或应用程序。
主要特性
/third_party)/third_party 目录包含外部辅助工具、分叉代码和其他第三方实用程序。您可以在此处放置您已修改或需要与应用程序捆绑但并非完全属于您自己的工具或代码。
主要特性
/githooks)/githooks 目录包含项目的 Git hooks。这些 hooks 可以在提交或推送代码时自动执行任务,例如检查代码格式、运行测试或更新版本号。
/assets)/assets 目录包含支持您存储库的其他资源,例如图像、徽标或其他项目所需的非代码文件。
/website)/website 目录包含项目网站的数据(如果您不使用 GitHub Pages)。您可以在此处放置项目网站的源代码。
支持目录在整个软件开发生命周期中发挥着至关重要的作用。下图说明了这些目录如何与开发工作流程集成。
| 目录 | 建议的组织结构 | 用法模式 |
|---|---|---|
/test | 可根据项目需求自由组织 | 外部测试、集成测试和测试数据 |
/docs | 按主题或用户类型组织 | 设计文档、用户手册、架构图 |
/tools | 每个子目录包含一个工具 | 代码生成器、分析工具、实用程序 |
/examples | 按复杂性或功能组织 | 简单的用法示例、完整的应用程序 |
/third_party | 按来源或目的分组 | 修改后的外部工具、UI 组件 |
/githooks | 按 Git hook 类型 | 提交前、推送前、合并后 hook |
/assets | 按资源类型 | 图像、视频、数据文件 |
/website | 标准的网站结构 | 项目网站的源文件 |
支持目录与核心目录具有特定的代码可见性和导入关系。
支持目录为完整的 Go 项目提供了基本的基础设施,促进了代码的开发、测试、文档编制和演示。虽然它们不包含主要的应用程序逻辑,但对于维护结构良好、文档齐全且对开发人员友好的代码库至关重要。
在决定是将文件添加到支持目录还是核心目录时,请考虑其目的:如果它支持开发过程而不是实现应用程序功能,那么它可能属于支持目录之一。