File size: 1,773 Bytes
a03b3ba |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import * as fs from "fs";
import { join } from "path";
import { build } from "vite";
import { plugins, make_gradio_plugin } from "./plugins";
import type { PreRenderedChunk } from "rollup";
import { examine_module } from "./index";
interface BuildOptions {
component_dir: string;
root_dir: string;
}
export async function make_build({
component_dir,
root_dir
}: BuildOptions): Promise<void> {
process.env.gradio_mode = "dev";
const svelte_dir = join(root_dir, "assets", "svelte");
const module_meta = examine_module(component_dir, root_dir, "build");
try {
for (const comp of module_meta) {
const template_dir = comp.template_dir;
const source_dir = comp.frontend_dir;
const pkg = JSON.parse(
fs.readFileSync(join(source_dir, "package.json"), "utf-8")
);
const exports: string[][] = [
["component", pkg.exports["."] as string],
["example", pkg.exports["./example"] as string]
].filter(([_, path]) => !!path);
for (const [entry, path] of exports) {
try {
const x = await build({
root: source_dir,
configFile: false,
plugins: [
...plugins,
make_gradio_plugin({ mode: "build", svelte_dir })
],
build: {
emptyOutDir: true,
outDir: join(template_dir, entry),
lib: {
entry: join(source_dir, path),
fileName: "index.js",
formats: ["es"]
},
minify: true,
rollupOptions: {
output: {
entryFileNames: (chunkInfo: PreRenderedChunk) => {
if (chunkInfo.isEntry) {
return "index.js";
}
return `${chunkInfo.name.toLocaleLowerCase()}.js`;
}
}
}
}
});
} catch (e) {
throw e;
}
}
}
} catch (e) {
throw e;
}
}
|