Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

GitBook

Build StatusNPM version

GitBook is a command line tool (and Node.js library) for building beautiful books using GitHub/Git and Markdown. Here is an example: Learn Javascript. You can publish book easily online using gitbook.com and an editor is available for Windows, Mac and Linux. You can follow @GitBookIO on Twitter. Complete documentation is available at help.gitbook.io.

Image

How to use it:

GitBook can be installed from NPM using:

$ npm install gitbook -g

Create the directories and files for a book from its SUMMARY.md file using

$ gitbook init

You can serve a repository as a book using:

$ gitbook serve ./repository

Or simply build the static website using:

$ gitbook build ./repository --output=./outputFolder

Options for commands build and serve are:

-o, --output <directory> Path to output directory, defaults to ./_book
-f, --format <name> Change generation format, defaults to site, availables are: site, page, ebook, json
--config <config file> Configuration file to use, defaults to book.js or book.json

GitBook loads the default configuration from a book.json file in the repository if it exists.

Here are the options that can be stored in this file:

{// Folders to use for output// Caution: it overrides the value from the command line// It's not advised this option in the book.json"output": null,// Generator to use for building// Caution: it overrides the value from the command line// It's not advised this option in the book.json"generator": "site",// Book metadats (somes are extracted from the README by default)"title": null,"description": null,"isbn": null,// For ebook format, the extension to use for generation (default is detected from output extension)// "epub", "pdf", "mobi"// Caution: it overrides the value from the command line// It's not advised this option in the book.json"extension": null,// Plugins list, can contain "-name" for removing default plugins"plugins": [],// Global configuration for plugins"pluginsConfig": {"fontSettings": {"theme": "sepia","night"or"white","family": "serif"or"sans","size": 1to4}},// Variables for templating"variables": {},// Links in template (null: default, false: remove, string: new value)"links": {// Custom links at top of sidebar"sidebar": {"Custom link name": "https://customlink.com"},// Sharing links"sharing": {"google": null,"facebook": null,"twitter": null,"weibo": null,"all": null}},// Options for PDF generation"pdf": {// Add page numbers to the bottom of every page"pageNumbers": false,// Font size for the fiel content"fontSize": 12,// Paper size for the pdf// Choices are [u’a0’, u’a1’, u’a2’, u’a3’, u’a4’, u’a5’, u’a6’, u’b0’, u’b1’, u’b2’, u’b3’, u’b4’, u’b5’, u’b6’, u’legal’, u’letter’]"paperSize": "a4",// Margin (in pts)// Note: 72 pts equals 1 inch"margin": {"right": 62,"left": 62,"top": 36,"bottom": 36},//Header HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."headerTemplate": null,//Footer HTML template. Available variables: _PAGENUM_, _TITLE_, _AUTHOR_ and _SECTION_."footerTemplate": null}}

You can publish your books to our index by visiting GitBook.com

Output Formats

GitBook can generate your book in the following formats:

  • Static Website: This is the default format. It generates a complete interactive static website that can be, for example, hosted on GitHub Pages.
  • eBook: A complete eBook with exercise solutions at the end of the book. You need to have ebook-convert installed. You can specify the eBook filename with the -o option, otherwise book will be used.
    • Generate a PDF using: gitbook pdf ./myrepo
    • Generate a ePub using: gitbook epub ./myrepo
    • Generate a MOBI using: gitbook mobi ./myrepo
  • JSON: This format is used for debugging or extracting metadata from a book. Generate this format using: gitbook build ./myrepo -f json.

Book Format

A book is a Git repository containing at least 2 files: README.md and SUMMARY.md.

README.md

Typically, this should be the introduction for your book. It will be automatically added to the final summary.

SUMMARY.md

The SUMMARY.md defines your book's structure. It should contain a list of chapters, linking to their respective pages.

Example:

# Summary
This is the summary of my book.
*[section 1](section1/README.md)*[example 1](section1/example1.md)*[example 2](section1/example2.md)*[section 2](section2/README.md)*[example 1](section2/example1.md)

Files that are not included in SUMMARY.md will not be processed by gitbook.

Multi-Languages

GitBook supports building books written in multiple languages. Each language should be a sub-directory following the normal GitBook format, and a file named LANGS.md should be present at the root of the repository with the following format:

*[English](en/)*[French](fr/)*[Español](es/)

You can see a complete example with the Learn Git book.

Glossary

Allows you to specify terms and their respective definitions to be displayed in the glossary. Based on those terms, gitbook will automatically build an index and highlight those terms in pages.

The GLOSSARY.md format is very simple :

# term
Definition for this term
# Another term
With it's definition, this can contain bold text and all other kinds of inline markup ...

Ignoring files & folders

GitBook will read the .gitignore, .bookignore and .ignore files to get a list of files and folders to skip. (The format inside those files follows the same convention as .gitignore).

Best practices for the .gitignore is to ignore build files from node.js (node_modules, ...) and build files from GitBook: _book, *.epub, *.mobi and *.pdf (Download GitBook.gitignore).

Cover

A cover image can be set by creating a file: /cover.jpg. The best resolution is 1800x2360. The generation of the cover can be done automatically using the plugin autocover.

A small version of the cover can also be set by creating a file: /cover_small.jpg.

Publish your book

The platform GitBook.com is like an "Heroku for books": you can create a book on it (public, paid, or private) and update it using git push.

Plugins

Plugins can be used to extend your book's functionality. Read GitbookIO/plugin for more information about how to build a plugin for GitBook.

Plugins needed to build a book can be installed using: gitbook install ./.

Official plugins:
NameDescription
exercisesAdd interactive exercises to your book.
quizzesAdd interactive quizzes to your book.
mathjaxDisplays mathematical notation in the book.
mixpanelMixpanel tracking for your book
infinitescrollInfinite Scrolling
Other plugins:
NameDescription
Google AnalyticsGoogle Analytics tracking for your book
DisqusDisqus comments integration in your book
AutocoverGenerate a cover for your book
Transform annoted quotes to notesAllow extra markdown markup to render blockquotes as nice notes
Send code to consoleEvaluate javascript block in the browser inspector's console
Revealable sectionsReveal sections of the page using buttons made from the first title in each section
Markdown within HTMLProcess markdown within HTML blocks - allows custom layout options for individual pages
Bootstrap JavaScript pluginsUse the Bootstrap JavaScript plugins in your online GitBook
Piwik Open AnalyticsPiwik Open Analytics tracking for your book
Heading AnchorsAdd linkable Github-style anchors to headings
JSBinEmbedded jsbin frame into your book
GrVisGitbook GrViz plugin is used to select from markdown dot and converting it into a picture format svg
PlantUmlGitbook PlantUml plugin is used to select from markdown uml and converting it into a picture format svg
MermaidAdds diagrams and flowcharts rendered by mermaid

Debugging

You can use the environment variable DEBUG=true to get better error messages (with stack trace). For example:

$ export DEBUG=true
$ gitbook build ./

About

Modern book format and toolchain using Git and Markdown

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages