GitBook Sample Plugin ============== This is a sample plugin for GitBook. Install it using: ```$ npm install gitbook-plugin``` ## How GitBook plugin works? A plugin for GitBook is a node package that can be published on [NPM](http://www.npmjs.org). ### package.json #### name The package name should begin with ```gitbook-plugin-```. And if your plugin is a theme, it should begin with ```gitbook-theme-```. Examples: `gitbook-plugin-mixpanel`, `gitbook-plugin-googleanalytics`, `gitbook-theme-dark` #### engine The package.json should contain a `engine` field using [the standard norm](https://www.npmjs.org/doc/json.html#engines). ``` "engines": { "gitbook": "*" } ``` For example if you want your plugin to supports only GitBook version supperior to 0.3.1: ``` "engines": { "gitbook": ">=0.3.1" } ``` ### entry point The plugin entry point should return an object with some metadata. #### "book" Type: `Object` Default value: `{}` #### "book.assets" Type: `String` Default value: `null` Path to the assets folder to copy #### "book.js" Type: `Array` Default value: `[]` List of javascript file to add to the html pages (relative to the assets folder). #### "book.css" Type: `Array` Default value: `[]` List of css file to add to the html pages (relative to the assets folder). #### "book.html" Type: `Object` Default value: `{}` Map of position -> code, html snippets to add to each page. The code could be a function. #### "book.templates" Type: `Object` Default value: `{}` Templates to override default templates, only use this option if you want to change entirely how the book is rendered. This object is a map: "name" -> "file", with names: * "site": page for a file from the `site` format * "page": page for the `page` format #### "hooks" Type: `Object` Default value: `{}` Map of "name" -> Function that needs to be called during build process. With names: * "init": just after initialization, before generation * "finish": after generation and everything is finished Each hook can return a promise.