Generates chunked (multi-page) HTML from Asciidoctor's single HTML file with the support of fine-tuned splits by chapters, sections, or any depth of subsections. Here is the sample output. Each chapter can have different levels of extraction depth. See What it does for details.
--titlePage
option (thanks to @johnthad).--css
option.--no-strictMode
option.javascript
branch. Please wait a couple of weeks. The new version can control any depth of sections to split. And even more, each chapter can have a different depth extraction level. The new version is written in JavaScript so it will be a lot easier to install!link
and script
tags with relative paths are copied to the destination directory keeping the structure of the relative path. So the custom CSS and script files should be properly copied by asciidoctor-chunker
.Asciidoctor-Chunker generates chunked HTML from a single HTML generated by Asciidoctor.
link
, script
and img
tags) whose paths are relative, to the directory relative to the chunked html output. Files are only copied if they are new or modified compared to the previously copied one.Here is the sample output created from the Asciidoctor User Manual. The footer on the sample page is added by setting the asciidoctor attribute and is not added by asciidoctor-chunker.
Asciidoctor-Chunker is written in JavaScript and runs with NodeJS.
npm
, the package manager CLI for Node.js.npm install -g asciidoctor-chunkerYou can install locally under the current directory as;
npm install asciidoctor-chunker
If you installed globally:
asiidoctor-chunker [single-html-file] -o [output-directory]
If you installed locally invoke the following under the directory you installed:
npx asciidoctor-chunker [single-html-file] -o [output-directory]
If you installed the prebuild program simply run the script as:
./asciidoctor-chunker.js [single-html-file] -o [output-directory]
[single-html-file]
is the single HTML file generated by Asciidoctor from the book doctype. If the output directory is not specified, the default is html_chunks
under the current directory.
More description of usage is available with --help
option.
You can list the multiple settings by connecting each specifier with a comma. Each specifier is consisted of either a single number or a collon separated with two numbers.
The single number sets the default level of extraction. Number 1 is the application's default and it extracts the chapter level. Number 2 for section extraction, 3 for subsection, and so on to 6 which is the maximum section level of Asciidoctor.
The list of collon separated numbers, chap:level
, can change the extraction depth for specific chapters, so 3:2
means chapter 3 is extracted down to 2 levels (ie. section level). You can use a hyphen to specify the range of chapters to set as chapFrom-chapTo:level
, so 1-3:5
means chapter 1 through 5 should be extracted with the depth level 5.
Example:
--depth 2 The default level 2, all the chapters and sections will be extracted. --depth 3,1:2,8:5 The default level 3, level 2 for Chap 1, level 5 for Chap 8. --depth 1,3-8:2 The default level 1, level 2 for Chap 3 to 8. --depth 3-8:3 No default is set so default level is 1, and level 3 for chap3 to 8.`
By default asciidoctor-chunker.css
is included in the output directory. It provides the non-opinionated page navigation at the bottom of every chunked page. You can override this by giving a comma separated list of paths to your custom css files. They are copied into the output directory so the paths must be accessible by asciidoctor-chunker
.
If you have any custom elements inserted under <div id=#content></div>
in the source single html, asciidoctor-chunker
ignores it by default. If you want them to be included into the chunked html, set the option --no-strictMode
. The element will be copied to every chunked page.
The index.html
created by asciidoctor-chunker
is selected by clicking the word Titlepage in the table of contents. To change the default value, use the option --titlePage [string]
where [string]
is the desired text.
The project contains the example
directory where you can generate the chunked html for the Asciidoctor User Manual by invoking make
. Simply go into the example
directory and invoke make
. This will clone the asciidoctor project from the github for the first time, then the chunked html will be generated under test/output-chunk/html_chunk/
directory. The index.html
is the first page.
$ cd example $ make
MIT
test/resources/output/single/sample.html
generated from test/resources/sample.adoc
.npm install cheerio commander
npm install --save-dev ava webpack webpack-cli webpack-shebang-plugin