Files
_hublib-web/packages/video-player/scripts/build.mjs

61 lines
1.4 KiB
JavaScript
Raw Normal View History

2026-02-27 09:50:13 +03:00
import { spawnSync } from "node:child_process";
import { copyFileSync, existsSync, mkdirSync, readdirSync, rmSync, statSync } from "node:fs";
import { dirname, extname, join, relative } from "node:path";
import { createRequire } from "node:module";
const require = createRequire(import.meta.url);
const rootDir = process.cwd();
const srcDir = join(rootDir, "src");
const distDir = join(rootDir, "dist");
const ASSET_EXTENSIONS = new Set([
".css",
".scss",
".svg",
".png",
".jpg",
".jpeg",
".webp",
".gif",
".ico",
".json",
]);
const copyAssets = directory => {
for (const entry of readdirSync(directory)) {
const fullPath = join(directory, entry);
const stats = statSync(fullPath);
if (stats.isDirectory()) {
copyAssets(fullPath);
continue;
}
if (!ASSET_EXTENSIONS.has(extname(fullPath))) {
continue;
}
const relativePath = relative(srcDir, fullPath);
const destinationPath = join(distDir, relativePath);
const destinationDir = dirname(destinationPath);
if (!existsSync(destinationDir)) {
mkdirSync(destinationDir, { recursive: true });
}
copyFileSync(fullPath, destinationPath);
}
};
rmSync(distDir, { recursive: true, force: true });
const tscPath = require.resolve("typescript/bin/tsc");
const tscResult = spawnSync(
process.execPath,
[tscPath, "-p", "tsconfig.build.json"],
{ stdio: "inherit", cwd: rootDir },
);
if (tscResult.status !== 0) {
process.exit(tscResult.status ?? 1);
}
copyAssets(srcDir);