generated from tpl/obsidian-sample-plugin
99 lines
2.3 KiB
TypeScript
99 lines
2.3 KiB
TypeScript
import { UserConfig, defineConfig } from "vite";
|
|
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
import manifest from "./manifest.json";
|
|
import fs from "fs/promises";
|
|
import path from "path";
|
|
import builtins from "builtin-modules";
|
|
|
|
export default defineConfig(async ({ mode }) => {
|
|
const { resolve } = path;
|
|
const prod = mode === "production";
|
|
|
|
return {
|
|
plugins: [
|
|
svelte(),
|
|
{
|
|
name: "postbuild-commands",
|
|
async closeBundle() {
|
|
if (prod) return;
|
|
|
|
if (!process.env.OBSIDIAN_PLUGIN_DIR) {
|
|
console.log(
|
|
"Set OBSIDIAN_PLUGIN_DIR in the .env file to plugin directory to copy files to."
|
|
);
|
|
return;
|
|
}
|
|
|
|
const dist =
|
|
process.env.OBSIDIAN_PLUGIN_DIR +
|
|
"/" +
|
|
manifest.id +
|
|
"-dev";
|
|
|
|
await fs.mkdir(dist, { recursive: true });
|
|
|
|
const copy = async (src: string, dist: string) => {
|
|
await fs.copyFile(src, path.resolve(dist, src));
|
|
};
|
|
|
|
await Promise.all([
|
|
await copy("./main.js", dist),
|
|
await copy("./styles.css", dist),
|
|
await copy("./manifest.json", dist),
|
|
]);
|
|
|
|
console.log("Copied output files to", dist);
|
|
},
|
|
},
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
"@components": path.resolve(__dirname, "./src/components"),
|
|
"@data-sources": path.resolve(__dirname, "./src/data-sources"),
|
|
"@settings": path.resolve(__dirname, "./src/settings"),
|
|
"@utils": path.resolve(__dirname, "./src/utils"),
|
|
"@views": path.resolve(__dirname, "./src/views"),
|
|
"@src": path.resolve(__dirname, "./src"),
|
|
},
|
|
},
|
|
build: {
|
|
lib: {
|
|
entry: resolve(__dirname, "src/main.ts"),
|
|
name: "main",
|
|
fileName: () => "main.js",
|
|
formats: ["cjs"],
|
|
},
|
|
minify: prod,
|
|
sourcemap: prod ? false : "inline",
|
|
cssCodeSplit: false,
|
|
emptyOutDir: false,
|
|
outDir: "dist",
|
|
rollupOptions: {
|
|
input: {
|
|
main: resolve(__dirname, "src/main.ts"),
|
|
},
|
|
output: {
|
|
entryFileNames: "main.js",
|
|
assetFileNames: "styles.css",
|
|
},
|
|
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,
|
|
],
|
|
},
|
|
},
|
|
} as UserConfig;
|
|
});
|