gradio/ui/packages/app/vite.config.js

101 lines
2.7 KiB
JavaScript
Raw Normal View History

import { defineConfig } from "vite";
import { svelte } from "@sveltejs/vite-plugin-svelte";
import sveltePreprocess from "svelte-preprocess";
import path from "path";
import fs from "fs";
// this is dupe config, gonna try fix this
import tailwind from "tailwindcss";
import nested from "tailwindcss/nesting/index.js";
const GRADIO_VERSION = process.env.GRADIO_VERSION;
//@ts-ignore
export default defineConfig(({ mode }) => {
Add embedded demos to website (#1270) * adding gallery * added netlify files * new navbar design * header section new design * used by section new design * cards section new design * integrates with section new design * customer stories section new design * footer and gradient * demos section new design * docs fixes * docs reorg * docs reorg * upgrading to tailwind 3 * tailwind config changes * navbar new design * fixing body on all pages * Updating Guides (#1012) * updating getting started * updated codecov version * tweaks to gs * added netlify file * added netlify file * website prebuild script * increased code size * blocks * edits * blocks_hello * hello world * guide * merge main * added flipper demo * guide * guide * add guides * tweak to refresh website * header section new design * demos section new design * cards design * used by section * tweets section * footer on all pages * mobile responsive fixes * mobile responsive fixes * https fonts * completed blocks guide * unify components * minor tweaks * docs headers styling and navigation pane * parameter code blocks * styling description and input type * parameter tables and other styling * only documenting interactive components when possible * guides * embedding not working * demos not working * fixing demo code * fixing demos * demo fix * updated demos * updated demos * ui update * updated docstrings * updated code snippets so they run * updating docs * Interface docs * updating interface * fixing parameters in interface.py * required and defaults for interface, and styling * fixing up interface (#1207) * fixing up interface * fixed interface methods * formatting * updating interface docs * updating interface docs * formatting * docstring to load from docstrings * fixed colors * finalize interface content * interface examples * fixed examples * added some blocks docs * blocks * component fixes * reorganized some files (#1210) * formatting * added info for every component * fixes * blocks docs * added blocks demos * adding combined interfaces * added parallel, series * Doc: layout update (#1216) * doc layout * home spacing Co-authored-by: Abubakar Abid <abubakar@huggingface.co> * adding layouts * layouts done * added events for components * formatting and https * brings back dropdown and other components * fix header ids * moved ids and fixed nav * added parameters for remaining component * docstring fixes * landing page demos * demo window placeholder * demo nav * fixed test * formatting * demo code * correctly importing gradio css/js * remove keyvalues * modify launch script to move gradio assetS * components embedded test * correct demo name * hide try demo and embedding * local devserver changes * create embedding json with configs * changes * fixes * comment out layout docs * demo work * demo fixes * demo embedding fixes * typo * jinja fix * demo nav fix * hide demo button * formatting * removed whitespace * remove newline from parameter * styling demo window * copy work * hide demo buttons * remove index * remove layouts from docs * remove merge artifact * merge dockerfile * chagnes * changes * changes * changes * styling demo window * revert most things * whoops * chagnes * changes * changes * changes * changes * changes * changes * format * changes * fixed Dataset docstring * fix component signature and add required * adding string shortcuts * fix small issues parameter docstringss * string shortcuts * fixed gallery and label values * added for remaining parameters * formatting * extended embedded components * typo * remove capitalization from embeddings * try examples button * added demos for blocks and combining interfaces * demos styling * homepage update (#1275) * spacing * remove console.log * demo window fixes * new spaces * shorten codeblock width * fix plot * better string shortcuts * add embedding config for json * remove console log Co-authored-by: Abubakar Abid <abubakar@huggingface.co> Co-authored-by: aliabd <ali.si3luwa@gmail.com> Co-authored-by: Victor Muštar <victor.mustar@gmail.com>
2022-05-16 23:45:38 +08:00
const CDN_URL =
mode === "production:cdn"
? `https://gradio.s3-us-west-2.amazonaws.com/${GRADIO_VERSION}/`
: "/";
const production =
mode === "production:cdn" ||
mode === "production:local" ||
mode === "production:website";
const is_cdn = mode === "production:cdn" || mode === "production:website";
return {
base: is_cdn ? CDN_URL : "./",
build: {
target: "esnext",
minify: production,
outDir: `../../../gradio/templates/${is_cdn ? "cdn" : "frontend"}`
},
define: {
BUILD_MODE: production ? JSON.stringify("prod") : JSON.stringify("dev"),
BACKEND_URL: production
? JSON.stringify("")
: JSON.stringify("http://localhost:7860/")
},
css: {
postcss: {
plugins: [nested, tailwind]
}
},
plugins: [
svelte({
experimental: {
inspector: true
},
compilerOptions: {
dev: !production
},
hot: !process.env.VITEST,
preprocess: sveltePreprocess({
2022-03-12 00:00:48 +08:00
postcss: { plugins: [tailwind, nested] }
})
}),
{
name: "inject-ejs",
enforce: "post",
transformIndexHtml: (html) => {
return html.replace(
/%gradio_config%/,
`<script>window.gradio_config = {{ config | tojson }};</script>`
);
},
writeBundle(config, bundle) {
if (!is_cdn) return;
const import_re = /import\(((?:'|")[\.\/a-zA-Z0-9]*(?:'|"))\)/g;
const import_meta = `${"import"}.${"meta"}.${"url"}`;
for (const file in bundle) {
const chunk = bundle[file];
if (chunk.type === "chunk") {
if (chunk.code.indexOf("import(") > -1) {
const fix_fn = `const VERSION_RE = new RegExp("${GRADIO_VERSION}\/", "g");function import_fix(mod, base) {const url = new URL(mod, base); return import(\`${CDN_URL}\${url.pathname?.startsWith('/') ? url.pathname.substring(1).replace(VERSION_RE, "") : url.pathname.replace(VERSION_RE, "")}\`);}`;
chunk.code =
fix_fn +
chunk.code.replace(
import_re,
`import_fix($1, ${import_meta})`
);
if (!config.dir) break;
const output_location = path.join(config.dir, chunk.fileName);
fs.writeFileSync(output_location, chunk.code);
}
}
}
}
}
],
test: {
environment: "happy-dom",
include: ["**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"]
}
};
});