@embeddable.com/sdk-core
Version:
Core Embeddable SDK module responsible for web-components bundling and publishing.
33 lines (26 loc) • 951 B
text/typescript
import * as fsSync from "node:fs";
import * as fs from "node:fs/promises";
import { ResolvedEmbeddableConfig } from "./defineConfig";
export default async (ctx: ResolvedEmbeddableConfig) => {
await removeIfExists(ctx);
await copyStencilConfigsToClient(ctx);
await createComponentDir(ctx.client.componentDir);
};
export async function removeIfExists(ctx: ResolvedEmbeddableConfig) {
const promises = [];
if (fsSync.existsSync(ctx.client.buildDir)) {
promises.push(fs.rm(ctx.client.buildDir, { recursive: true }));
}
if (fsSync.existsSync(ctx.client.tmpDir)) {
promises.push(fs.rm(ctx.client.tmpDir, { recursive: true }));
}
await Promise.all(promises);
}
async function copyStencilConfigsToClient(ctx: ResolvedEmbeddableConfig) {
await fs.cp(ctx.core.configsDir, ctx.client.webComponentRoot, {
recursive: true,
});
}
async function createComponentDir(dir: string) {
await fs.mkdir(dir, { recursive: true });
}