Generate build artifacts into a separate folder. on new version, copy the manifest.json file into the build folder

This commit is contained in:
Kossi D. T. Saka 2023-01-25 07:22:42 +01:00
parent 49fba8aa1f
commit 0274e7a26e
1 changed files with 50 additions and 27 deletions

View File

@ -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);
}
});