antora-site-generator-lunr
Version:
An Antora's site generator that produces a Lunr index.
46 lines (41 loc) • 2.02 kB
JavaScript
const generateIndex = require('antora-lunr')
const aggregateContent = require('@antora/content-aggregator')
const buildNavigation = require('@antora/navigation-builder')
const buildPlaybook = require('@antora/playbook-builder')
const classifyContent = require('@antora/content-classifier')
const convertDocuments = require('@antora/document-converter')
const createPageComposer = require('@antora/page-composer')
const loadUi = require('@antora/ui-loader')
const mapSite = require('@antora/site-mapper')
const produceRedirects = require('@antora/redirect-producer')
const publishSite = require('@antora/site-publisher')
const { resolveConfig: resolveAsciiDocConfig } = require('@antora/asciidoc-loader')
async function generateSite (args, env) {
const playbook = buildPlaybook(args, env)
const asciidocConfig = resolveAsciiDocConfig(playbook)
const [contentCatalog, uiCatalog] = await Promise.all([
aggregateContent(playbook).then((contentAggregate) => classifyContent(playbook, contentAggregate, asciidocConfig)),
loadUi(playbook),
])
const pages = convertDocuments(contentCatalog, asciidocConfig)
const navigationCatalog = buildNavigation(contentCatalog, asciidocConfig)
const composePage = createPageComposer(playbook, contentCatalog, uiCatalog, env)
pages.forEach((page) => composePage(page, contentCatalog, navigationCatalog))
const siteFiles = mapSite(playbook, pages).concat(produceRedirects(playbook, contentCatalog))
const index = generateIndex(playbook, pages, contentCatalog, env)
siteFiles.push(generateIndex.createIndexFile(index))
if (playbook.site.url) siteFiles.push(composePage(create404Page()))
const siteCatalog = { getFiles: () => siteFiles }
return publishSite(playbook, [contentCatalog, uiCatalog, siteCatalog])
}
function create404Page () {
return {
title: 'Page Not Found',
mediaType: 'text/html',
src: { stem: '404' },
out: { path: '404.html' },
pub: { url: '/404.html', rootPath: '' },
}
}
module.exports = generateSite