obsidian-locator/esbuild.config.mjs
2025-06-21 13:22:54 +02:00

66 lines
1.4 KiB
JavaScript

import esbuild from 'esbuild'
import process from 'process'
import builtins from 'builtin-modules'
import esbuildSvelte from 'esbuild-svelte'
import { sveltePreprocess } from 'svelte-preprocess'
import path from 'path'
import { copy } from 'esbuild-plugin-copy'
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 context = await esbuild.context({
banner: {
js: banner,
},
entryPoints: ['./src/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,
],
outfile: path.join('./dist', 'main.js'),
plugins: [
esbuildSvelte({
compilerOptions: { css: 'injected' },
preprocess: sveltePreprocess(),
}),
copy({
assets:{
from: ['manifest.json','./assets/styles.css'],
to: ['./']
}
})
],
format: 'cjs',
target: 'chrome98',
logLevel: 'info',
sourcemap: prod ? false : 'inline',
treeShaking: true,
minify: prod,
})
if (prod) {
await context.rebuild()
process.exit(0)
} else {
await context.watch()
}