hd0013's picture
Upload folder using huggingface_hub
8fdc036 verified
raw
history blame contribute delete
No virus
2.26 kB
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;
python_path: string;
}
export async function make_build({
component_dir,
root_dir,
python_path
}: 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,
python_path,
"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")
);
let component_config = {
plugins: [],
svelte: {
preprocess: []
}
};
if (
comp.frontend_dir &&
fs.existsSync(join(comp.frontend_dir, "gradio.config.js"))
) {
const m = await import(join(comp.frontend_dir, "gradio.config.js"));
component_config.plugins = m.default.plugins || [];
component_config.svelte.preprocess = m.default.svelte?.preprocess || [];
}
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(component_config),
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;
}
}