53 lines
1.9 KiB
JavaScript
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;
|