兼容性

API 稳定性与发布边界

G6Lite 的公开入口、稳定能力、弃用兼容层与实验性能力说明

G6Lite 仍处于 0.1.x beta 阶段。公开 API 以 npm 包根入口和 package.json#exports 为唯一边界;src/ 中未从包根导出的模块属于内部实现,不承诺深层路径兼容性。

推荐公开入口

  • Graph:创建、渲染、更新和销毁图实例。
  • register() 与 extensionFactory():注册受控扩展。
  • runLayout():独立运行布局。
  • 从包根导出的配置、数据、行为和扩展类型。
import { Graph, register, runLayout } from '@antv/g6-lite';
import type { GraphData, GraphOptions } from '@antv/g6-lite';

不要从 @antv/g6-lite/src/... 或构建产物内部路径导入。发布包虽然包含 src/,但它不是额外的公开 API 面。

ESM 与 CommonJS

当前包根只提供 ESM,不提供 require('@antv/g6-lite') 条件。CommonJS 可行性验证表明,同步 require 入口和类型声明本身可以生成,但双产物还必须同时保证两项运行时契约:

  • ESM 与 CommonJS 入口共享同一套扩展注册状态,避免同一应用混用两种入口时出现重复或不可见的注册项。
  • layout.worker: true 经业务打包器处理后仍能定位并加载包内的模块 Worker,不能因 Worker 资源丢失而静默回退主线程。

当前 CommonJS 消费构建无法可靠保留 Worker 的静态资源关联,验证中会请求不存在的 Worker 文件;独立双构建也会产生两份模块级注册表。因此本版本不发布“只能同步加载、但 Worker 或扩展边界不完整”的 CommonJS 产物。

仍使用 CommonJS 工具链的应用可以在客户端边界使用动态导入:

const { Graph } = await import('@antv/g6-lite');

这不会改变 Graph 依赖真实 DOM、Canvas 和 WebGL 的运行环境要求。

弃用兼容层

以下能力为现有项目保留,但新代码应迁移到推荐入口:

  • BaseNode、BreathingNode、registerNode():改用 register() 和函数式节点扩展。
  • context.graph:扩展优先使用结构化的 data、state、viewport 上下文。
  • ExtensionContext 平铺坐标方法:改用 context.viewport。
  • Graph#getAllData():改用明确的数据查询与更新 API。
  • 旧事件字段 originalEvent:改用当前事件对象定义。

弃用能力会在移除前通过 Changelog 给出迁移说明;beta 阶段不承诺跨 minor 永久保留。

实验性能力

Combo 的折叠、嵌套和运行时归组仍为实验性能力。可以用于验证和受控场景,但其配置细节可能在 0.1.x 内调整。正式使用前请覆盖真实数据、嵌套层级和增量更新回归。

版本兼容预期

  • beta 阶段:公开入口保持集中,但 API 仍可能根据契约测试和案例反馈调整。
  • 稳定版后:遵循语义化版本;破坏性变更进入 major 版本。
  • 每次升级前:查看 Changelog,并执行类型检查、构建和关键案例回归。

业务可调用的入口、方法和配置字段见 可用 API、Graph 和 配置。