import esbuild from "esbuild"; import builtins from "builtin-modules"; import { denoPlugins } from "@luca/esbuild-deno-loader"; const prod = Deno.args[0] === "--production"; const bannerContent = `/* * THIS IS A GENERATED/BUNDLED FILE BY ESBUILD * if you want to view the source, please visit the github repository of this plugin */ `; const ctx = await esbuild.context({ plugins: [...denoPlugins({ loader: "native" })], banner: { js: bannerContent, }, entryPoints: ["main.ts"], bundle: true, external: [ "obsidian", "electron", "@codemirror/autocomplete", "@codemirror/collab", "@codemirror/commands", "@codemirror/language", "@codemirror/lint", "@codemirror/search", "@codemirror/state", "@codemirror/view", "@lezer/common", "@lezer/highlight", "@lezer/lr", ...builtins, ], format: "cjs", target: "es2018", logLevel: "info", sourcemap: prod ? false : "inline", treeShaking: true, outfile: "main.js", minify: prod, }); if (prod) { await ctx.rebuild(); await esbuild.stop(); Deno.exit(0); } else { await ctx.watch(); }