开发基础设施
OpenLayers 维护了一个全面的开发基础设施,涵盖了构建系统、开发工具、测试框架和文档生成。该基础设施支持从源代码到分发包、示例和 API 文档的库开发工作流程。
基础设施概览
开发基础设施由多个相互关联的系统组成,处理开发生命周期的不同方面。
开发基础设施架构
核心依赖和结构
OpenLayers 拥有最少的运行时依赖和全面的开发依赖。
核心依赖
库只有少数直接依赖用于运行时功能:
| 依赖 | 目的 |
|---|---|
| rbush | 空间索引 |
| earcut | 多边形三角剖分 |
| geotiff | GeoTIFF 解析 |
| pbf | Protocol buffer 解析 |
开发依赖
开发依赖包括用于构建、测试和文档的工具:
- 构建工具:Webpack、Rollup、TypeScript
- 测试工具:Karma、Mocha、Puppeteer
- 文档工具:JSDoc
构建过程流程
OpenLayers 中的构建过程遵循 npm scripts 中定义的一系列步骤,将源代码转换为可分发的格式。
转译过程
转译过程是构建管线中的第一步:
- 清理构建目录
- 创建新的构建目录结构
- 将源代码从
src/ol复制到build/ol - 处理 web workers
- 设置库版本
命令:npm run transpile
构建索引
索引构建过程创建库的主入口点:
- 删除任何现有的 index.js 文件
- 运行转译
- 生成索引文件
命令:npm run build-index
完整构建
完整构建使用 Rollup 创建库的捆绑版本:
- 清理完整构建目录
- 运行索引构建
- 使用 Rollup 捆绑库
命令:npm run build-full
包构建
包构建准备分发包:
- 创建完整构建
- 复制 CSS 文件
- 生成 TypeScript 声明文件
- 准备包
命令:npm run build-package
测试框架
OpenLayers 拥有一个全面的测试套件,包括浏览器测试、Node.js 测试和渲染测试。
浏览器测试
浏览器测试使用 Karma 在无头 Chrome 浏览器中运行:
- 使用 Webpack 配置 Karma
- 使用 Puppeteer 设置无头 Chrome
- 运行支持源映射的测试
命令:npm run test-browser
Node 测试
Node.js 测试使用 Mocha 运行:
- 在 test/node 目录中递归运行测试
- 测试 Node.js 特定功能
命令:npm run test-node
渲染测试
渲染测试确保一致的视觉输出:
- 构建完整库
- 渲染测试用例
- 与预期图像比较
命令:npm run test-rendering
开发工作流程
开发工作流程包括用于提供示例、检查代码质量和生成文档的工具。
提供示例
对于开发,Webpack dev 服务器提供带有实时重新加载的示例:
命令:npm start 或 npm run serve-examples
类型检查和 Linting
通过 TypeScript 和 ESLint 确保代码质量:
- TypeScript:
npm run typecheck、npm run typecheck-strict - ESLint:
npm run lint
文档生成
使用 JSDoc 生成 API 文档:
命令:npm run apidoc
构建输出
构建过程产生几个产物:
- build/ol:转译的源代码
- build/full:捆绑的库
- build/examples:构建的示例
- build/apidoc:API 文档
版本管理
OpenLayers 在 package.json 文件中跟踪版本信息,并在构建过程中更新它。这允许精确的版本控制,并确保构建的产物正确反映当前版本。
当前版本指定为 10.5.1-dev,表示朝向下一次发布的开发进展。
结论
OpenLayers 构建系统为开发、测试和分发提供了全面且灵活的工作流程。它利用现代 JavaScript 工具确保代码质量、跨不同环境的兼容性和高效的构建过程。该基础设施使团队能够有效地维护库并交付高质量的发布版本。