v0 から v1 への移行
変更点の概要
ts-graphviz v0 から v1 への移行では、ライブラリのアーキテクチャと API に大きな変更が加えられました:
- AST 中心の設計への移行:AST(抽象構文木)に関連するモジュールが統合され、モデルを DOT 言語に変換する機能が一箇所に集約されました。
ts-graphviz/astモジュールの導入:@ts-graphviz/parserパッケージが統合され、ts-graphviz/astモジュールとして AST 関連の処理(parseやstringify関数など)が提供されるようになりました。- 属性型の導入:さまざまな属性の型定義が追加され、属性指定時のエディタ補完や TypeScript の型チェックが強化されました。
- インターフェースの命名規則の統一:インターフェース名の曖昧さが解消され、
IClusterなどのIで始まるインターフェース名が、AST 型と整合性のある名前に変更されました。
なぜアップグレードするのか
v1 へのアップグレードによる利点:
- AST 処理の統一:AST モジュールの統合により、グラフの操作が簡潔かつ効率的になりました。
- 型安全性の向上:属性型の導入により、型チェックが強化され、開発体験が向上します。
- 命名の一貫性:新しい命名規則により、ライブラリの理解と使用が容易になります。
マイグレーション手順
1. 依存関係の更新
ts-graphviz パッケージをバージョン 1 に更新します。
{
"dependencies": {
"ts-graphviz": "^1.0.0"
}
}
以下のコマンドを実行します:
npm install ts-graphviz@^1.0.0
2. インターフェース名の更新
インターフェース名が変更されました。コードを以下のように更新してください:
INode➔NodeModelIEdge➔EdgeModelICluster➔GraphBaseModel(推奨はGraphModelまたはSubgraphModel)ISubgraph➔SubgraphModelIRootCluster➔RootGraphModel
例:
- import { INode } from 'ts-graphviz';
+ import { NodeModel } from 'ts-graphviz';
- const node: INode = ...;
+ const node: NodeModel = ...;
3. 新しい ts-graphviz/ast モジュールの使用
@ts-graphviz/parser を使用していた場合、新しい ts-graphviz/ast モジュールに移行してください。
例:
- import { parse, stringify } from '@ts-graphviz/parser';
+ import { parse, stringify } from 'ts-graphviz/ast';
const dot = 'digraph { a -> b }';
const ast = parse(dot);
// AST を操作...
const newDot = stringify(ast);
4. 属性の使用方法の更新
属性型が導入されたことで、特定の属性キーと値をインポートできるようになりました。
例:
import { attribute } from 'ts-graphviz';
g.node('Node1', {
[attribute.label]: '私のノード',
[attribute.color]: 'red',
});