UNPKG

mz-particles

Version:

TypeScript library for creating particle effects on canvas.

93 lines (77 loc) 3.01 kB
import path from 'path'; import fs from 'fs'; import fse from 'fs-extra'; import { compileClientSideCSS } from './client-side/css-provider.js'; import { compileClientSideScripts } from './client-side/js-provider.js'; import { configureMarkdown, initMarkDown } from './markdown-config.js'; // https://highlightjs.org import emoji from 'markdown-it-emoji'; // https://github.com/markdown-it/markdown-it-emoji import { loadConfig, renderPages } from './render/pages-provider.js'; import { collectSideMenuData, getPagesList } from './render/side-menu-provider.js'; import { getTimeStamp } from './common-provider.js'; import { renderSpecialPages } from './render/special-pages-provider.js'; import { renderSitemap, updateReadmeDocs } from './render/sitemap-provider.js'; export const DATA_FOLDER = path.join(process.cwd(), './src/docs/data'); export const OUTPUT_FOLDER = path.join(process.cwd(), './docs'); // markdown ------------------- const md = initMarkDown(); md.use(emoji); configureMarkdown(md); const init = async () => { const sourceRootPath = path.join(DATA_FOLDER, './pages'); const targetRootPath = path.join(OUTPUT_FOLDER, './pages'); const cssTimeStamp = getTimeStamp(); const jsTimeStamp = getTimeStamp(); // empty destination folders fse.emptyDirSync(targetRootPath); fse.emptyDirSync(path.join(OUTPUT_FOLDER, './css')); fse.emptyDirSync(path.join(OUTPUT_FOLDER, './js')); // load layout const layoutPath = path.join(DATA_FOLDER, './layouts/page-layout.html'); const layout = fs.readFileSync(layoutPath, 'utf8'); // load config files const mainConfig = loadConfig(path.join(DATA_FOLDER, './config.json')); const pagesConfig = loadConfig(path.join(DATA_FOLDER, './pages/pages-config.json')); // collect side menu data const sideMenuMap = new Map(); collectSideMenuData(sourceRootPath, null, sideMenuMap); // pages list is used for prev / next section at the bottom of the pages const pagesList = getPagesList(sideMenuMap); // render all pages in the given folder recursively - markdown to html renderPages(sourceRootPath, targetRootPath, { layout, sideMenuMap, pagesConfig, cssTimeStamp, jsTimeStamp, pagesList, mainConfig, }, md); // render all pages like index.html const specialPagesLayoutPath = path.join(DATA_FOLDER, './layouts/special-page-layout.html'); const specialPagesLayout = fs.readFileSync(specialPagesLayoutPath, 'utf8'); renderSpecialPages( path.join(DATA_FOLDER, './special-pages'), path.join(OUTPUT_FOLDER), { layout: specialPagesLayout, cssTimeStamp, jsTimeStamp, mainConfig, } ); // render sitemap renderSitemap( mainConfig?.website?.url || '', path.join(OUTPUT_FOLDER), pagesList ); compileClientSideScripts(jsTimeStamp); await compileClientSideCSS(cssTimeStamp); updateReadmeDocs( mainConfig?.website?.url || '', path.join(OUTPUT_FOLDER), sideMenuMap, pagesConfig ); }; await init();