CLI to generate books and documentation using gitbook
npx @tessl/cli install tessl/npm-gitbook-cli@2.3.0GitBook CLI is a command-line interface tool that manages GitBook versions and proxies commands to specific GitBook installations. It provides comprehensive version management capabilities and acts as a launcher for different GitBook versions, ensuring compatibility across different projects and GitBook releases.
npm install -g gitbook-cliFor programmatic usage (library mode):
const manager = require('gitbook-cli');For modular imports:
const config = require('gitbook-cli/lib/config');
const local = require('gitbook-cli/lib/local');
const registry = require('gitbook-cli/lib/registry');
const tags = require('gitbook-cli/lib/tags');
const commands = require('gitbook-cli/lib/commands');# Install GitBook CLI globally
npm install -g gitbook-cli
# List installed versions
gitbook ls
# Install latest GitBook version
gitbook fetch
# Build a GitBook project
gitbook build ./my-book
# Serve a GitBook project
gitbook serve ./my-book
# Use specific GitBook version
gitbook build ./my-book --gitbook=2.6.7const manager = require('gitbook-cli');
// Initialize GitBook CLI
manager.init();
// Ensure specific version is available
manager.ensure(process.cwd(), '2.6.7')
.then(function(version) {
console.log('GitBook version ready:', version.version);
});
// List local versions
const versions = manager.versions();
versions.forEach(v => console.log(v.name, v.version));GitBook CLI is built around several key components:
Complete GitBook version lifecycle management including installation, removal, listing, and resolution. Supports semantic versioning, pre-release tags, and local development aliases.
// Core version management functions from main module
function ensure(bookRoot, version, opts): Promise<VersionObject>;
function get(bookRoot, version): Promise<VersionObject>;
function getBookVersion(bookRoot): string;
function load(version): Promise<GitBookInstance>;
function ensureAndLoad(bookRoot, version, opts): Promise<GitBookInstance>;
function install(version): Promise<string>;
function uninstall(version): Promise<void>;
function link(name, folder): Promise<void>;
function versions(): VersionObject[];
function available(): Promise<AvailableVersions>;
function update(tag): Promise<string | null>;Command discovery, validation, and execution system that proxies GitBook commands to the appropriate version while handling argument parsing and error reporting.
// Command execution functions (from commands module)
function exec(commands, command, args, kwargs): Promise<any>;
function help(commands): void;Environment-aware configuration system supporting custom installation directories and initialization of required folder structures.
// Configuration functions
function init(): void;
function setRoot(root): void;
// Configuration constants
const GITBOOK_VERSION: string; // '>1.x.x'
const ROOT: string;
const VERSIONS_ROOT: string;Version validation, comparison, and tag management utilities for GitBook version handling.
// Version tag utilities (from tags module)
function isTag(version): boolean;
function isValid(version): boolean;
function sort(a, b): number;
function satisfies(version, condition, opts): boolean;
function getTag(version): string;interface VersionObject {
name: string; // Version name/tag
version: string; // Semantic version
path: string; // Installation path
link: string | null; // Symlink target for aliases
tag: string; // Release tag (latest, beta, etc.)
}
interface AvailableVersions {
versions: string[]; // Array of available versions
tags: object; // Map of tag names to versions
}
interface ValidationOptions {
install?: boolean; // Auto-install if missing
acceptTagCondition?: boolean; // Accept tag conditions
}
interface GitBookInstance {
commands: Command[];
[key: string]: any;
}
interface Command {
name: string;
description: string;
options?: CommandOption[];
exec: (args: string[], kwargs: object) => Promise<any>;
}
interface CommandOption {
name: string;
description: string;
defaults?: any;
values?: string[];
}