@embeddable.com/sdk-core
Version:
Core Embeddable SDK module responsible for web-components bundling and publishing.
54 lines (46 loc) • 1.61 kB
text/typescript
import buildTypes from "./buildTypes";
import buildGlobalHooks from "./buildGlobalHooks";
import provideConfig from "./provideConfig";
import {
checkNodeVersion,
removeBuildSuccessFlag,
storeBuildSuccessFlag,
} from "./utils";
import { initLogger, logError } from "./logger";
import * as path from "node:path";
import * as fs from "node:fs/promises";
import * as fsSync from "node:fs";
export default async () => {
await initLogger("package");
const breadcrumbs: string[] = [];
try {
const startTime = process.hrtime();
await checkNodeVersion();
breadcrumbs.push("checkNodeVersion");
await removeBuildSuccessFlag();
const config = await provideConfig();
config.client.buildDir = path.resolve(config.client.rootDir, "dist");
await prepare(config);
await buildTypes(config);
await buildGlobalHooks(config);
for (const getPlugin of config.plugins) {
const plugin = getPlugin();
breadcrumbs.push(`${plugin.pluginName}: validate`);
await plugin.validate(config);
breadcrumbs.push(`${plugin.pluginName}: buildPackage`);
await plugin.buildPackage(config);
}
// Calculating build time in seconds
config.buildTime = process.hrtime(startTime);
await storeBuildSuccessFlag();
} catch (error: any) {
await logError({ command: "package", breadcrumbs, error });
console.log(error);
process.exit(1);
}
};
const prepare = async (config: any) => {
if (fsSync.existsSync(config.client.buildDir))
await fs.rm(config.client.buildDir, { recursive: true });
await fs.mkdir(config.client.buildDir);
};