UNPKG

@isotope/docking

Version:

Docking - Isotope-based Static Site Generator

55 lines (50 loc) 1.43 kB
import * as logger from "../../logger"; import * as utils from "../../utils"; import { Config } from "../../config"; import { Storage } from "../../storage"; /** * Processes Docking components. * * @param storage - Docking storage. * @param config - Docking config. * @param production - If components should be processed for production. * @param lastBuild - Last build data in ms for caching. */ const processComponents = async ( storage: Storage, config: Config, production: boolean, lastBuild?: number ): Promise<void> => { const inputFolder = storage.getInputFolder("components"); const outputFolder = storage.getOutputFolder("components"); for await (const entry of utils.readdirp(inputFolder, { alwaysStat: Boolean(lastBuild), depth: 0, type: "all" })) { const stats = entry.stats || { ctimeMs: 0, mtimeMs: 0 }; const cached = !lastBuild; const updated = lastBuild && lastBuild < stats.mtimeMs && lastBuild < stats.ctimeMs; if (cached || updated) { await storage .addComponent({ assetsDir: storage.getOutputFolder("assets"), config, getComponent: (name: string) => { return storage.getComponent(name); }, input: utils.join(inputFolder, entry.path), outputFolder }) .process(production) .catch((error: Error) => { logger.error("Error while processing components", error); }); } } }; export { processComponents };