52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
|
import fs from "fs";
|
||
|
import esbuild from "esbuild";
|
||
|
import sveltePlugin from "esbuild-svelte";
|
||
|
import sveltePreprocess from "svelte-preprocess";
|
||
|
import { glslify } from 'esbuild-plugin-glslify';
|
||
|
import fetch from "node-fetch";
|
||
|
|
||
|
|
||
|
const { PORT = 8080 } = process.env;
|
||
|
const isDev = process.argv[2] === "--watch";
|
||
|
|
||
|
const sendReloadSignal = () => {
|
||
|
fetch("http://localhost:" + PORT + "/reload", { method: "POST" });
|
||
|
}
|
||
|
|
||
|
|
||
|
//make sure the directoy exists before stuff gets put into it
|
||
|
if (!fs.existsSync("./public/build/")) {
|
||
|
fs.mkdirSync("./public/build/")
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//build the application
|
||
|
esbuild.build({
|
||
|
entryPoints: ['./src/main.ts', './src/workers/ai-worker.ts', './src/workers/pixel-worker.ts'],
|
||
|
outdir: './public/build',
|
||
|
bundle: true,
|
||
|
define: {
|
||
|
IS_DEV: isDev,
|
||
|
PORT
|
||
|
},
|
||
|
minify: !isDev,
|
||
|
sourcemap: true,
|
||
|
watch: isDev ? {
|
||
|
onRebuild(error, result) {
|
||
|
if (error) console.error('watch build failed:', error)
|
||
|
else {
|
||
|
console.log('watch build succeeded');
|
||
|
sendReloadSignal()
|
||
|
}
|
||
|
}
|
||
|
} : false,
|
||
|
loader: { ".vert": "text", ".frag": "text" },
|
||
|
plugins: [sveltePlugin({ preprocess: sveltePreprocess() }), glslify({
|
||
|
extensions: ['vert', 'frag'],
|
||
|
compress: true,
|
||
|
})]
|
||
|
}).catch((err) => {
|
||
|
console.error(err)
|
||
|
process.exit(1)
|
||
|
})
|