2.0.5 • Published 7 years ago
quick-epub v2.0.5
quick-epub
Quickly generate valid EPUB 3.0.1 documents.
This library is based on cyrilis' epub-gen, and is more of a proof-of-concept than an actual library. It was used to learn about the EPUB specification.
Will not
- Validate your passed HTML files
- Process images in said HTML files
Installation
This module is distributed via npm which is bundled with node and should be installed as one of your project's dependencies:
npm install quick-epub --saveUsage
epub.createFile(data)
Creates a file with a given data object.
// import the module
const epub = require("quick-epub");
// minimal data object
const data = {
title: "White Fang",
author: ["Jack London"],
chapters: [
{
title: "CHAPTER I - THE TRAIL OF THE MEAT",
content: "Dark spruce forest frowned on either side the frozen waterway."
},
{
title: "CHAPTER II - THE SHE-WOLF",
content: "Breakfast eaten and the slim camp-outfit lashed to the sled..."
},
{
title: "CHAPTER III - THE HUNGER CRY",
content: "The day began auspiciously."
}
]
};
// create epub
epub
.createFile(data)
.then(() => console.log("book done."))
.catch(e => console.error(e));Data Object
At a minimum, the data object must have three properties:
title- Title of the book. Must be aString.author- Author(s) of the book. Must be anArraycontainingStringtypes.chapters- Actual content of the book. Must be anArrayofObjecttypes with the following properties:title- Title of the chapter. Must be aString.content- Main content of the chapter. Must be aString.
Optional properties
The following properties are optional, it is recommended to at least set output to something sane.
output- Filepath/name of file. Defaults to a randomly named epub in the directory of the calling scriptappendChapterTitles- If set, appends the chapter title at the beginning of each chapter. Defaults tofalselang- Language. Defaults toenpublisher- Whoever published this fantastic EPUBdescription- A short blurb/summary of the bookdates- Published/modified dates. Both default to ISO-8601Datetypes formatted asStringtypespublishedmodified
identifiers- Digital object identifiers.
Example
const data = {
// compulsory
title: "White Fang",
author: ["Jack London", "Weedon Smith"],
chapters: [
{
title: "CHAPTER I - THE TRAIL OF THE MEAT",
content: "Dark spruce forest frowned on either side the frozen waterway."
},
{
title: "CHAPTER II - THE SHE-WOLF",
content: "Breakfast eaten and the slim camp-outfit lashed to the sled..."
},
{
title: "CHAPTER III - THE HUNGER CRY",
content: "The day began auspiciously."
}
],
// optional (default values created)
output: "Jack London - White Fang.epub",
appendChapterTitles: true,
lang: "en",
dates: {
published: new Date().toISOString(),
modified: new Date().toISOString()
},
// optional (no default values created)
publisher: "Project Gutenberg",
description: "The story of a man and a wolf.",
identifiers: {
isbn10: "this is definitely not a valid ISBN-10 number",
isbn13: "nor is this a valid ISBN-13 number",
doi: "yep. not valid either."
}
};Acknowledgements
Thanks to:
- Project Gutenberg for all the freely available material to test, especially White Fang!
- cyrilis' epub-gen library
- IDPF for their epub validation tool, aptly titled epubcheck