import { sassPlugin } from "esbuild-sass-plugin"; import esbuild from "esbuild"; import chokidar from "chokidar"; /** @type import("esbuild").BuildOptions */ const options = { entryPoints: ["./app/javascript/application.ts"], outdir: "./app/assets/builds", bundle: true, allowOverwrite: true, plugins: [ sassPlugin({ loadPaths: ["./node_modules"], }) ], sourcemap: true, publicPath: "assets" }; const watch = process.argv.includes("--watch"); if(watch) { const watcher = chokidar.watch("./app/javascript/**/*.{ts,scss}"); watcher.on("change", async () => { console.log("👀 Change detected, rebuilding..."); await esbuild.build(options) .then(() => console.log("⚡ Done")) .catch(() => console.log("🚨 Failed")); }); } await esbuild.build(options) .then(() => console.log("⚡ Done")) .catch(() => console.log("🚨 Failed"));