日本語|English

プラグインオプション(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(...) を持つため、オプションのドキュメントをスキーマから機械的に生成できます。