プラグインオプション(Plugin options)
VFMはプラグインのオプションをvalibotスキーマとして宣言し、スキーマとそこから推論したTypeScript型をexportしています。型推論と実行時検証を単一の情報源で両立します。
StringifyMarkdownOptionsSchema は stringify / VFM APIのオプション全体を検証します。
import { StringifyMarkdownOptionsSchema } from '@vivliostyle/vfm';
import * as v from 'valibot';
const options = v.parse(StringifyMarkdownOptionsSchema, userInput);
スキーマは v.intersect で構成されており、プラグインごとのサブスキーマも個別にexportされているため、下流のツール(例: Vivliostyle CLI)は必要なものだけ再利用できます。exportされた各スキーマには、Schema 接尾辞を除いた同名の推論型があります(例: FigureOptionsSchema と FigureOptions)。
| スキーマ | 説明 |
|---|---|
StringifyMarkdownOptionsSchema |
stringify / VFM のオプション全体(editPlugins と replace を含む)。 |
SerializablePluginOptionsSchema |
シリアライズ可能なデータとして表現できるプラグインオプション。プログラムからの入力とYAMLフロントマターの共通コア。 |
VFMSettingsSchema |
YAMLフロントマターの vfm: フィールド。 |
LineBreaksOptionsSchema |
hardLineBreaks。 |
MathOptionsSchema / MathRendererSchema |
math と mathRenderer。 |
DocumentSerializableOptionsSchema |
partial。 |
FormatOptionsSchema |
disableFormatHtml。 |
CodeOptionsSchema |
コードブロックのキャプション向け assignIdToFigcaption。 |
FigureOptionsSchema / ImgFigcaptionOrderSchema / CaptionlessImagePolicySchema |
imgFigcaptionOrder、assignIdToFigcaption、captionlessImagePolicy。 |
FigcaptionInlineOptionsSchema |
parseFigcaptionAsInline。 |
FootnoteOptionsSchema / FootnoteModeSchema / YamlFootnoteOptionsSchema |
footnote。Yaml 版はカスタマイズ用フィールドをYAMLで表現できる値に制限する。 |
ReplaceOptionsSchema / ReplaceRuleSchema |
replace フックのルール。 |
RewriteRelativeHrefExtensionsOptionsSchema |
rewriteRelativeHrefExtensions。 |
TableOptionsSchema / TableCellPresetSchema / YamlTableOptionsSchema |
table。Yaml 版は文字列プリセットのみ受け付ける。 |
各スキーマのフィールドは v.description(...) を持つため、オプションのドキュメントをスキーマから機械的に生成できます。