@prismai/prism-ladle
Version:
Enhanced component development environment based on Ladle, with multi-project support
50 lines (46 loc) • 1.62 kB
JavaScript
import path from "path";
import { promises as fs } from "fs";
import { performance } from "perf_hooks";
import { globby } from "globby";
import viteProd from "./vite-prod.js";
import debug from "./debug.js";
import { getMetaJsonString } from "./vite-plugin/generate/get-meta-json.js";
import { getEntryData } from "./vite-plugin/parse/get-entry-data.js";
import getFolderSize from "./get-folder-size.js";
import applyCLIConfig from "./apply-cli-config.js";
import getAppId from "./get-app-id.js";
/**
* @param params {import("../shared/types").CLIParams}
*/
const build = async (params = {}) => {
const startTime = performance.now();
debug("Starting build command");
process.env["VITE_LADLE_APP_ID"] = getAppId();
const { configFolder, config } = await applyCLIConfig(params);
await viteProd(config, configFolder);
const entryData = await getEntryData(
await globby(
Array.isArray(config.stories) ? config.stories : [config.stories],
),
);
const jsonContent = getMetaJsonString(entryData);
await fs.writeFile(
path.join(process.cwd(), config.outDir, "meta.json"),
jsonContent,
);
console.log("✓ Meta.json successfully created.");
const folderSize = await getFolderSize(
path.join(process.cwd(), config.outDir),
);
const stopTime = performance.now();
const inSeconds = (stopTime - startTime) / 1000;
console.log(
`⏱️ Ladle finished the production build in ${Number(inSeconds).toFixed(
0,
)}s producing ${folderSize} MiB of assets.`,
);
console.log(config.i18n.buildTooltip);
return true;
};
export default build;