Skip to content

开发基础设施

OpenLayers 维护了一个全面的开发基础设施,涵盖了构建系统、开发工具、测试框架和文档生成。该基础设施支持从源代码到分发包、示例和 API 文档的库开发工作流程。

基础设施概览

开发基础设施由多个相互关联的系统组成,处理开发生命周期的不同方面。

SVG
100%

开发基础设施架构

来源:package.json12-34

核心依赖和结构

OpenLayers 拥有最少的运行时依赖和全面的开发依赖。

核心依赖

库只有少数直接依赖用于运行时功能:

依赖目的
rbush空间索引
earcut多边形三角剖分
geotiffGeoTIFF 解析
pbfProtocol buffer 解析

开发依赖

开发依赖包括用于构建、测试和文档的工具:

  • 构建工具:Webpack、Rollup、TypeScript
  • 测试工具:Karma、Mocha、Puppeteer
  • 文档工具:JSDoc

构建过程流程

OpenLayers 中的构建过程遵循 npm scripts 中定义的一系列步骤,将源代码转换为可分发的格式。

SVG
100%

转译过程

转译过程是构建管线中的第一步:

  1. 清理构建目录
  2. 创建新的构建目录结构
  3. 将源代码从 src/ol 复制到 build/ol
  4. 处理 web workers
  5. 设置库版本

命令:npm run transpile

构建索引

索引构建过程创建库的主入口点:

  1. 删除任何现有的 index.js 文件
  2. 运行转译
  3. 生成索引文件

命令:npm run build-index

完整构建

完整构建使用 Rollup 创建库的捆绑版本:

  1. 清理完整构建目录
  2. 运行索引构建
  3. 使用 Rollup 捆绑库

命令:npm run build-full

包构建

包构建准备分发包:

  1. 创建完整构建
  2. 复制 CSS 文件
  3. 生成 TypeScript 声明文件
  4. 准备包

命令:npm run build-package

测试框架

OpenLayers 拥有一个全面的测试套件,包括浏览器测试、Node.js 测试和渲染测试。

SVG
100%

浏览器测试

浏览器测试使用 Karma 在无头 Chrome 浏览器中运行:

  1. 使用 Webpack 配置 Karma
  2. 使用 Puppeteer 设置无头 Chrome
  3. 运行支持源映射的测试

命令:npm run test-browser

Node 测试

Node.js 测试使用 Mocha 运行:

  1. 在 test/node 目录中递归运行测试
  2. 测试 Node.js 特定功能

命令:npm run test-node

渲染测试

渲染测试确保一致的视觉输出:

  1. 构建完整库
  2. 渲染测试用例
  3. 与预期图像比较

命令:npm run test-rendering

开发工作流程

开发工作流程包括用于提供示例、检查代码质量和生成文档的工具。

提供示例

对于开发,Webpack dev 服务器提供带有实时重新加载的示例:

命令:npm startnpm run serve-examples

类型检查和 Linting

通过 TypeScript 和 ESLint 确保代码质量:

  • TypeScript:npm run typechecknpm 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 工具确保代码质量、跨不同环境的兼容性和高效的构建过程。该基础设施使团队能够有效地维护库并交付高质量的发布版本。