35 lines
955 B
JavaScript
35 lines
955 B
JavaScript
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"));
|