2.0.5 • Published 5 years ago

quick-epub v2.0.5

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

quick-epub

npm MIT License PRs Welcome

Commitizen friendly Build status Coverage status

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 --save

Usage

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 a String.
  • author - Author(s) of the book. Must be an Array containing String types.
  • chapters - Actual content of the book. Must be an Array of Object types with the following properties:
    • title - Title of the chapter. Must be a String.
    • content - Main content of the chapter. Must be a String.

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 script
  • appendChapterTitles - If set, appends the chapter title at the beginning of each chapter. Defaults to false
  • lang - Language. Defaults to en
  • publisher - Whoever published this fantastic EPUB
  • description - A short blurb/summary of the book
  • dates - Published/modified dates. Both default to ISO-8601 Date types formatted as String types
    • published
    • modified
  • 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:

2.0.5

5 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.0

8 years ago