日本語 | English

構成ファイル

複数の記事や章ごとのファイルをまとめて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
  • 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;