diff --git a/esbuild.mjs b/esbuild.mjs index 304cf5d5..4d8840f4 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -14,19 +14,19 @@ const sharedConfig = { async function build() { try { - await esbuild.build({ + const ctx1 = await esbuild.context({ ...sharedConfig, outfile: "dist/main.cjs.js", format: "cjs" }) - await esbuild.build({ + const ctx2 = await esbuild.context({ ...sharedConfig, outfile: "dist/main.es.js", format: "esm" }) - const result = await esbuild.build({ + const ctx3 = await esbuild.context({ ...sharedConfig, minifyWhitespace: true, outfile: "dist/main.es.bundle.js", @@ -34,9 +34,18 @@ async function build() { metafile: true }) - fs.writeFileSync("meta.json", JSON.stringify(result.metafile)) + if (process.argv.includes("--watch")) { + await Promise.all([ctx1.watch(), ctx2.watch(), ctx3.watch()]) + console.info("Watching for changes...") + } else { + const results = await Promise.all([ctx1.rebuild(), ctx2.rebuild(), ctx3.rebuild()]) + fs.writeFileSync("meta.json", JSON.stringify(results[2].metafile)) - console.log("Build completed successfully.") + ctx1.dispose() + ctx2.dispose() + ctx3.dispose() + console.info("Build completed successfully.") + } } catch (error) { console.error("Build failed:", error) process.exit(1) diff --git a/package.json b/package.json index ff9f90f7..e261715b 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ }, "scripts": { "build": "tsc --project tsconfig.types.json && node esbuild.mjs && npm run typedoc", + "dev": "node esbuild.mjs --watch & vite preview --outDir dist", "preview": "vite preview", "lint": "eslint", "lint-fix": "eslint --fix", diff --git a/vite.config.ts b/vite.config.ts index 74ac61f9..1b7253f4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,6 +10,11 @@ export default defineConfig(() => ({ server: { port: 8080 }, + preview: { + port: 40510, + open: false, + cors: true + }, test: { coverage: { include: ["src/**/*.{js,ts}"],