epubCreator.js

epubcreator logo πŸ“š epubCreator

CLI tool for compiling a directory into an EPUB ebook

Version: 2.6.1


✨ Features


πŸ“¦ Installation

git clone https://github.com/yourusername/epubcreator.git
cd epubcreator

or download as ZIP

Dependencies

npm install archiver@5.3.0 marked@4.0.0 turndown@7.2.4

For DOCX conversion (optional):

npm install mammoth@1.6.0

πŸš€ Usage

node epubcreator.js <command> [options]

Available Commands


πŸ“ Directory Structure

./
β”œβ”€β”€ config.txt              ← Book metadata (required)
β”œβ”€β”€ ord.txt                 ← Chapter order list (optional)
β”œβ”€β”€ Docs/                   ← Source .docx files (for docx2md)
β”œβ”€β”€ Markdowns/              ← Source .md files (for convertch)
β”œβ”€β”€ EPUB/
β”‚   β”œβ”€β”€ images/
β”‚   β”‚   └── cover.png       ← REQUIRED
β”‚   β”œβ”€β”€ audiovideo/         ← Optional
β”‚   β”œβ”€β”€ bab1.xhtml          ← Chapters (any name, in EPUB/ root)
β”‚   └── ...
└── builds/
    └── [folder-name].epub  ← Build result

πŸ“ Configuration (config.txt)

# ============================================================
#  METADATA BUKU  β€”  edit nilai di bawah ini sesuai kebutuhan
# ============================================================

# Judul utama (wajib)
title: Judul Buku

# Subjudul (opsional)
subtitle: Subjudul

# Volume / jilid (opsional)
volume: Vol. 1

# Penulis / creator (wajib)
author: Nama Penulis

# Bahasa (default: en)
language: en

# Identifier unik (URN atau ISBN), kosongkan untuk otomatis
identifier: 

# Tanggal terbit (YYYY-MM-DD), kosongkan pakai hari ini
date: 

# Penerbit (opsional)
publisher: 

# Deskripsi / sinopsis (opsional)
description: Deskripsi singkat buku ini.

# Subjek / kategori, pisahkan dengan koma
subjects: Fiksi, Petualangan

# Nama seri (opsional)
series_name: 

# Nomor seri (opsional)
series_number: 

# Kontributor tambahan: nama|peran, nama|peran, ...
# Peran: aut (penulis), edt (editor), ill (ilustrator), dll.
contributors: 

# Judul tambahan (opsional), pisahkan dengan koma
extra_titles: 

# ============================================================
#  KONVERSI DOCX β†’ MARKDOWN (opsional)
# ============================================================
# [docx-mapping]
# Jika bagian ini ada, konversi akan menggunakan ukuran font (dalam pt)
# Jika tidak ada, akan menggunakan style Word (Heading 1, Heading 2, dll.)
# heading1 = 24
# heading2 = 18
# heading3 = 14

πŸ“„ Order File (ord.txt)

Optional file to specify chapter order. Each line contains a .xhtml filename:

# Daftar urutan bab (satu baris satu .xhtml)
bab1.xhtml
bab2.xhtml
bab3.xhtml

If ord.txt doesn’t exist, chapters are sorted naturally (numeric-aware).


πŸ”„ Conversion Details

convertch β€” Markdown β†’ XHTML

convertch xhtml2md β€” XHTML β†’ Markdown

convertch docx2md β€” DOCX β†’ Markdown


πŸ—οΈ Build Process

The build command:

  1. Reads config.txt for metadata
  2. Collects chapters from EPUB/ (respects ord.txt if exists)
  3. Detects cover image (cover.png in EPUB/images/)
  4. Generates:
    • volume.opf β€” EPUB package file
    • toc.xhtml β€” Table of Contents
    • cover.xhtml β€” Cover page
    • META-INF/container.xml
  5. Packages everything into builds/[folder-name].epub

🌍 Language Support

The tool supports Indonesian (id) and English (en).


πŸ’‘ Examples

  1. Start a new book project
node epubcreator.js createdir

This creates:

  1. Create a chapter
node epubcreator.js createchapter
# Enter filename: bab1.xhtml
# Enter chapter title: Pengantar
  1. Convert Markdown to XHTML
node epubcreator.js convertch
  1. Convert DOCX to Markdown
node epubcreator.js convertch docx2md
# Or with custom path
node epubcreator.js conv docx2md --output ./MyMarkdowns
  1. Build the EPUB
node epubcreator.js build
# Output: builds/[folder-name].epub
  1. Convert XHTML back to Markdown
node epubcreator.js convertch xhtml2md
# Or using the alias
node epubcreator.js conv xhtml2md

πŸ“¦ Dependencies


πŸ“œ License

MIT Copyright (C) 2026 YogabyAllwaysever


⭐ Support

If you find this tool useful, please give it a ⭐ on GitHub!


Happy EPUB-creating! πŸ“šβœ¨