UNPKG

antora-site-generator-lunr

Version:

An Antora's site generator that produces a Lunr index.

46 lines (41 loc) 2.02 kB
'use strict' 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