jsmorabito_obsidian-commander/scripts/esbuild.config.mjs
2022-07-05 15:10:05 +02:00

84 lines
2 KiB
JavaScript

import esbuild from "esbuild";
import process from "process";
import builtins from 'builtin-modules';
import alias from "esbuild-plugin-alias";
import { sassPlugin } from 'esbuild-sass-plugin';
import { createRequire } from 'module';
import { renameSync } from "fs";
const require = createRequire(import.meta.url);
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 (https://github.com/phibr0/obsidian-commander)
*/
`;
const prod = (process.argv[2] === 'production');
esbuild.build({
banner: {
js: banner,
},
footer: {
js: "\n/* by phibr0 */"
},
entryPoints: ['src/main.ts'],
bundle: true,
external: [
'obsidian',
'electron',
'@codemirror/autocomplete',
'@codemirror/closebrackets',
'@codemirror/collab',
'@codemirror/commands',
'@codemirror/comment',
'@codemirror/fold',
'@codemirror/gutter',
'@codemirror/highlight',
'@codemirror/history',
'@codemirror/language',
'@codemirror/lint',
'@codemirror/matchbrackets',
'@codemirror/panel',
'@codemirror/rangeset',
'@codemirror/rectangular-selection',
'@codemirror/search',
'@codemirror/state',
'@codemirror/stream-parser',
'@codemirror/text',
'@codemirror/tooltip',
'@codemirror/view',
...builtins],
format: 'cjs',
watch: !prod,
loader: {
'.svg': 'text',
},
target: 'es2015',
logLevel: "info",
sourcemap: prod ? false : 'inline',
minify: prod,
treeShaking: true,
outfile: 'main.js',
plugins: [
alias({
"react": require.resolve("preact/compat"),
"react-dom/test-utils": require.resolve("preact/test-utils"),
"react-dom": require.resolve("preact/compat"),
"react/jsx-runtime": require.resolve("preact/jsx-runtime"),
}),
sassPlugin(),
{
name: "Rename Stylesheet",
setup(build) {
build.onEnd(() => {
try {
renameSync("main.css", "styles.css")
} catch (error) {
console.error(error);
}
});
},
}
],
}).catch(() => process.exit(1));