world/book/node_modules/honkit/lib/output/generatePages.js
2025-05-12 05:38:44 +09:00

53 lines
1.9 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const promise_1 = __importDefault(require("../utils/promise"));
const generatePage_1 = __importDefault(require("./generatePage"));
const page_cache_1 = require("./page-cache");
/**
Output all pages using a generator
@param {Generator} generator
@param {Output} output
@return {Promise<Output>}
*/
function generatePages(generator, output) {
const cache = (0, page_cache_1.getCache)();
const pages = output.getPages();
const logger = output.getLogger();
// Is generator ignoring assets?
if (!generator.onPage) {
return (0, promise_1.default)(output);
}
const root = output.book.getContentRoot();
const isIncrementBuilding = output.incrementalChangeFileSet.size !== 0;
const pageList = pages.map((page) => {
const file = page.getFile();
const absoluteFilePath = path_1.default.join(root, file.getPath());
// When incremental build
if (isIncrementBuilding && !output.incrementalChangeFileSet.has(absoluteFilePath)) {
logger.debug.ln(`skip generate page "${file.getPath()}"`);
return; // Skip build
}
return (0, generatePage_1.default)(output, page)
.then((resultPage) => {
// It call renderToString
// Create page file
return generator.onPage(output, resultPage);
})
.fail((err) => {
logger.error.ln(`error while generating page "${file.getPath()}":`);
throw err;
});
});
return promise_1.default.all(pageList.toArray()).then(() => {
// update caches
cache.save();
return output;
});
}
exports.default = generatePages;