使用掛勾 Hooks

优质
小牛编辑
120浏览
2023-12-01

掛勾(Hooks)是添加功能,或改變處理程序行為的一種方法,使用自訂的回呼。

掛勾列表

相對於全域流程

頁面解析相關的額外功能,建議使用 blocks 。

NameDescriptionArguments
init在解析完書籍內容後呼叫,在實際轉製網頁與書籍之前執行。None
finish:before在轉製頁面完成後呼叫,尚未複製素材、封面等...None
finish所有轉製程序完成後呼叫。None

相對於頁面流程

NameDescriptionArguments
page:before在對頁面套用模板引擎之前呼叫Page Object
page在輸出與建立頁面索引前呼叫Page Object
頁面物件
{
    // Parser named
    "type": "markdown",
    
    // File Path relative to book root
    "path": "page.md",
    
    // Absolute file path
    "rawpath": "/usr/...",
    
    // Progress of the page in summary
    "progress": {
        ...
    },
    
    // Page Content (available in "page:before")
    "content": "# Hello",
    
    // Page Content splited in sections (available in "page")
    "sections": [
        {
            "content": "<h1>Hello</h1>",
            "type": "normal"
        }
    ]
}
添加標題的範例
{
    "page:before": function(page) {
        page.content = "# Title\n" +page.content;
        return page;
    }
}
替換某些 html 內容的範例
{
    "page": function(page) {
        page.sections[0].content = page.sections[0].content.replace("<b>", "<strong>")
            .replace("</b>", "</strong>");
        return page;
    }
}

非同步操作

Hooks callbacks can be asynchronous and return a promise.

Example:

{
    "init": function() {
        return writeSomeFile()
        .then(function() {
            return writeAnotherFile();
        });
    }
}