@c-time/frelio-dependency-map
Frelio SSG の依存マップ(dependency-map)の型定義とユーティリティ。
概要
依存マップは、各出力ファイルがどのソースファイル(テンプレート、コンテンツタイプ定義、コンテンツデータ)に依存しているかを追跡する。これにより、ソースファイルの変更時に影響を受ける出力のみを再生成する差分ビルドが可能になる。
ランタイム依存なし。
インストール
npm install @c-time/frelio-dependency-map
使用例
import {
createFrelioDependencyMap,
setDependencies,
findAffectedOutputs,
mergeFrelioDependencyMaps,
isFrelioDependencyMap,
} from '@c-time/frelio-dependency-map'
import type { FrelioDependencyMap } from '@c-time/frelio-dependency-map'
// 依存マップの作成
let map = createFrelioDependencyMap()
// 出力ファイルの依存を設定
map = setDependencies(map, '/news/hello.html', [
'content_types/news.json',
'templates/news/detail/index.html',
'contents/published/news/hello.json',
])
// ソースファイル変更時に影響を受ける出力を検索(glob パターン対応)
const affected = findAffectedOutputs(map, 'templates/news/detail/index.html')
// => ['/news/hello.html']
// 複数マップのマージ
const merged = mergeFrelioDependencyMaps(map1, map2)
API
型
| 型 | 説明 |
|---|---|
FrelioDependencyMap | 出力パス → 依存パス配列のマッピング |
OutputPath | 出力ファイルパス |
DependencyPath | 依存ファイルパス(glob パターン対応) |
DependencyPathPrefix | 依存パスのプレフィックス定数(CONTENT_TYPES, TEMPLATES, CONTENTS) |
ValidationResult / ValidationError | バリデーション結果 |
関数
| 関数 | 説明 |
|---|---|
createFrelioDependencyMap() | 空の依存マップを作成 |
setDependencies(map, output, deps) | 出力ファイルの依存を設定 |
removeDependencies(map, output) | 出力ファイルの依存を削除 |
getDependencyPaths(map, output) | 出力ファイルの依存パスを取得 |
getOutputPaths(map) | 全出力パスを取得 |
getAllDependencyPaths(map) | 全依存パスを取得 |
findAffectedOutputs(map, changed) | 変更されたファイルに影響を受ける出力を検索 |
mergeFrelioDependencyMaps(...maps) | 複数の依存マップをマージ |
isFrelioDependencyMap(value) | 型ガード |
validateFrelioDependencyMap(value) | バリデーション |
ライセンス
MIT