diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 8e2dad0..a902edc 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -1,42 +1,65 @@ -import esbuild from "esbuild"; -import process from "process"; -import builtins from 'builtin-modules' +import process from "node:process"; +import path from "node:path"; +import { copyFileSync } from "node:fs"; -const banner = -`/* +import esbuild from "esbuild"; +import builtins from "builtin-modules"; + +const banner = `/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ `; -const prod = (process.argv[2] === 'production'); +const prod = process.argv[2] === "production"; -esbuild.build({ +const buildOptions = { banner: { js: banner, }, - entryPoints: ['main.ts'], + entryPoints: ["main.ts", "styles.css"], + outdir: "dist", 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', + "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", watch: !prod, - target: 'es2018', + target: "es2018", logLevel: "info", - sourcemap: prod ? false : 'inline', + sourcemap: prod ? false : "inline", treeShaking: true, - outfile: 'main.js', -}).catch(() => process.exit(1)); +}; + +esbuild + .build(buildOptions) + .catch(() => process.exit(1)) + .then(() => { + /** + * If there is a new version number, copy it to the dist folder + */ + if (process.env.npm_new_version) { + const manifestJsonSrc = path.join(process.cwd(), "manifest.json"); + const manifestJsonDist = path.join( + process.cwd(), + buildOptions.outdir, + "manifest.json" + ); + + // Copy the manifest.json file over to the dist folder + copyFileSync(manifestJsonSrc, manifestJsonDist); + } + });