diff --git a/.env b/.env new file mode 100644 index 0000000..eca8031 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +OBSIDIAN_PLUGIN_DIR=~/ObsidianVaults/book-journal/.obsidian/plugins diff --git a/.gitignore b/.gitignore index e09a007..eca0914 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,6 @@ data.json # Exclude macOS Finder (System Explorer) View States .DS_Store + +# Exclude dist directory +dist \ No newline at end of file diff --git a/styles.css b/styles.css deleted file mode 100644 index b37e38a..0000000 --- a/styles.css +++ /dev/null @@ -1 +0,0 @@ -.obt-goodreads-search.svelte-11kqgr4{padding-bottom:var(--size-4-4)}.obt-goodreads-search.svelte-11kqgr4 input:where(.svelte-11kqgr4){width:100%}.obt-goodreads-search-suggestion.svelte-1kq4sbn{display:flex;align-items:center}.obt-goodreads-search-suggestion.svelte-1kq4sbn img.cover:where(.svelte-1kq4sbn){max-width:100px;max-height:100px;margin-right:var(--size-4-2);object-fit:cover;border-radius:var(--radius-s)}.obt-goodreads-search-suggestion.svelte-1kq4sbn .details:where(.svelte-1kq4sbn){flex-grow:1}.obt-goodreads-search-suggestion.svelte-1kq4sbn .details:where(.svelte-1kq4sbn) .title:where(.svelte-1kq4sbn){color:var(--text-normal);font-size:var(--font-ui-medium)}.obt-goodreads-search-suggestion.svelte-1kq4sbn .details:where(.svelte-1kq4sbn) .extra-details:where(.svelte-1kq4sbn){color:var(--text-muted);font-size:var(--font-ui-small);display:flex;gap:var(--size-4-1)}.obt-reading-progress.svelte-paogvq{padding-bottom:var(--size-4-4)}.obt-reading-progress.svelte-paogvq h2:where(.svelte-paogvq){margin-bottom:var(--size-4-6)}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq){display:flex;flex-direction:column;gap:var(--size-4-4)}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .value-field:where(.svelte-paogvq){display:flex;flex-direction:column;align-items:stretch;gap:var(--size-4-2);width:100%}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq){width:100%;display:grid;grid-template-columns:1fr 1fr}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq) .mode-field-option:where(.svelte-paogvq){text-align:center;padding:var(--size-4-2);background-color:var(--interactive-normal);border:var(--border-width) solid var(--background-modifier-border);border-radius:var(--radius-m)}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq) .mode-field-option:where(.svelte-paogvq):has(input:where(.svelte-paogvq):checked){background-color:var(--interactive-accent)}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq) .mode-field-option:where(.svelte-paogvq):hover{background-color:var(--interactive-hover)}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq) .mode-field-option:where(.svelte-paogvq) input:where(.svelte-paogvq){display:none}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq) .mode-field-option:where(.svelte-paogvq).page-number{border-top-right-radius:0;border-bottom-right-radius:0}.obt-reading-progress.svelte-paogvq form:where(.svelte-paogvq) .mode-field:where(.svelte-paogvq) .mode-field-option:where(.svelte-paogvq).percentage{border-top-left-radius:0;border-bottom-left-radius:0}.rating-input.svelte-19sa8ca{display:flex;align-items:center;gap:.5rem}.rating-input.svelte-19sa8ca svg{position:absolute;width:var(--size-4-16);height:var(--size-4-16)}.rating-input.svelte-19sa8ca .rating-group{display:flex;gap:.25rem}.rating-input.svelte-19sa8ca .rating-item{position:relative;width:var(--size-4-16);height:var(--size-4-16)}.obt-rating.svelte-badw3i{padding-bottom:var(--size-4-4)}.obt-rating.svelte-badw3i h2:where(.svelte-badw3i){text-align:center}.obt-rating.svelte-badw3i form:where(.svelte-badw3i){display:flex;flex-direction:column;gap:var(--size-4-4)}.obt-rating.svelte-badw3i form:where(.svelte-badw3i) .value-field:where(.svelte-badw3i){display:flex;flex-direction:column;align-items:center}.obt-rating.svelte-badw3i form:where(.svelte-badw3i) .value-field:where(.svelte-badw3i) label:where(.svelte-badw3i){display:none}.obt-rating.svelte-badw3i form:where(.svelte-badw3i) button:where(.svelte-badw3i){align-self:stretch} diff --git a/vite.config.mts b/vite.config.mts index 01ed8ad..3dbf3ea 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -1,5 +1,7 @@ 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"; @@ -8,7 +10,42 @@ export default defineConfig(async ({ mode }) => { const prod = mode === "production"; return { - plugins: [svelte()], + 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"), @@ -30,7 +67,7 @@ export default defineConfig(async ({ mode }) => { sourcemap: prod ? false : "inline", cssCodeSplit: false, emptyOutDir: false, - outDir: "", + outDir: "dist", rollupOptions: { input: { main: resolve(__dirname, "src/main.ts"),