構成ファイル
複数の記事や章ごとのファイルをまとめて1つの出版物を構成するには、構成ファイルを利用します。vivliostyle build または vivliostyle preview コマンドを実行するとき、カレントディレクトリに構成ファイル vivliostyle.config.js があるとそれが使われます。また、vivliostyle.config.json というファイル名で JSONC(コメント付きJSON)形式で構成ファイルを作成することもできます。
構成ファイルの作成
次のコマンドで構成ファイル vivliostyle.config.js を作成することができます。
vivliostyle init
これでカレントディレクトリに vivliostyle.config.js が生成されます。作成される vivliostyle.config.js ファイルは以下のようなものです。
// @ts-check
import { defineConfig } from '@vivliostyle/cli';
export default defineConfig({
title: 'My Book Title',
author: 'John Doe',
language: 'en',
image: 'ghcr.io/vivliostyle/cli:latest',
entry: ['manuscript.md'],
});
構成ファイルの設定内容
構成ファイルの設定内容についてはファイル内のコメント(// ではじまる)に説明があります。それぞれの項目について主要な設定内容を紹介します。すべての設定内容については Config Reference を参照してください。
- title: 出版物のタイトル(例:
title: 'Principia') - author: 著者名(例:
author: 'Isaac Newton') - language: 言語(例:
language: 'en')。この指定があると HTML のlang属性に反映されます。 - size: ページサイズ(例:
size: 'A4')。指定方法は ページサイズの指定 を参照してください。 - theme: ドキュメント全体に適用する Vivliostyle Themes のパッケージ名、または CSS ファイルのパスを指定します。以下の値を指定することができ、複数のテーマを配列形式で指定することもできます。
- npm スタイルのパッケージ名(例:
@vivliostyle/theme-techbook,./local-pkg) - 単一の CSS を指定する URL やローカルファイルのパス(例:
./style.css,https://example.com/style.css)
- npm スタイルのパッケージ名(例:
-
entry: 入力の Markdown または HTML ファイルの配列を指定します。
js entry: [ { path: 'about.md', title: 'About This Book', theme: 'about.css' }, 'chapter1.md', 'chapter2.md', 'glossary.html' ],entry には文字列またはオブジェクト形式で入力の指定ができます。オブジェクト形式の場合、以下のプロパティを追加できます。path: エントリーのパスを指定します。このプロパティは必須ですが、rel: 'contents'またはrel: 'cover'を指定するときのみ不要です。この指定については、以下の項目を参照してくださいtitle: エントリーのタイトルを指定します。このプロパティを設定しない場合、エントリーの内容からタイトルが取得されます。theme: エントリーに適用する Vivliostyle Themes のパッケージ名、または CSS ファイルのパスを指定します。
-
output: 出力先を指定。例:
output: 'output.pdf'。デフォルトは{title}.pdf。次のように複数の出力を配列形式で指定することも可能です:js output: [ './output.pdf', { path: './book', format: 'webpub', }, ],output には文字列またはオブジェクト形式で出力の指定ができます。オブジェクト形式の場合、以下のプロパティを追加できます。path: 出力先のパスを指定します。このプロパティは必須です。format: 出力するフォーマットを指定します(指定可能なオプション:pdf,epub,webpub)EPUB出力については EPUB 形式の出力 を、WebPub 出力については Web 出版物(WebPub)の出力 を参照してください。
- workspaceDir: 中間ファイルを保存するディレクトリを指定。この指定がない場合のデフォルトはカレントディレクトリであり、Markdown から変換された HTML ファイルは Markdown ファイルと同じ場所に保存されます。例:
workspaceDir: '.vivliostyle' - toc: このプロパティを指定すると、目次を含む HTML ファイル
index.htmlが出力されます。詳しくは 目次の作成 を参照してください。 - cover: このプロパティを指定すると、表紙ページ用の HTML ファイル
cover.htmlが出力されます。詳しくは 表紙ページの作成 を参照してください。 - image: 使用する Docker のイメージを変更します。詳細は Dockerを利用した生成 を参照してください。
複数の入出力を一度に対応する
以上の構成ファイルのオプションは、配列で複数指定することができます。配列として設定すると、複数の入力・出力を一度に扱うことができて便利です。
以下の例は、src ディレクトリにある Markdown ファイルから同名の PDF ファイルに変換する構成ファイルです。
const fs = require('fs');
const path = require('path');
const inputDir = path.join(__dirname, 'src');
const outputDir = path.join(__dirname, 'output');
const files = fs.readdirSync(inputDir);
const vivliostyleConfig = files
.filter((name) => name.endsWith('.md'))
.map((name) => ({
title: `Article ${path.basename(name, '.md')}`,
entry: name,
entryContext: inputDir,
output: path.join(outputDir, `${path.basename(name, '.md')}.pdf`),
}));
module.exports = vivliostyleConfig;