diff --git a/CLAUDE.md b/CLAUDE.md index b59fc18..f4e38e6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,7 +16,7 @@ - Ключи API — в настройках плагина (`data.json`), в git не попадают. ## Команды -- `npm run dev` — сборка в watch-режиме в тестовый vault. +- `npm run dev` — сборка в watch-режиме в тестовый vault. Другой vault — через `VOICE_NOTE_VAULT=<путь> npm run dev`; если vault не найден, копирование пропускается с предупреждением. - `npm test` — vitest, вся папка `tests/`. Зелёным считается весь набор. - `npm run build` — продакшн-сборка `main.js`. - `npm run typecheck` — два прохода: весь проект с Node-типами и `src/core` через `tsconfig.core.json` без Node-типов (`process`, `Buffer` в core — ошибка компиляции). diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 4443b21..ec26965 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -4,13 +4,19 @@ import { builtinModules } from 'node:module'; import process from 'node:process'; const prod = process.argv[2] === 'production'; -const VAULT = '/Users/andrey.epifancev/Library/Mobile Documents/iCloud~md~obsidian/Documents/voice-note-test'; +// Путь к тестовому vault: переменная окружения VOICE_NOTE_VAULT, иначе vault автора. +const VAULT = + process.env.VOICE_NOTE_VAULT || + '/Users/andrey.epifancev/Library/Mobile Documents/iCloud~md~obsidian/Documents/voice-note-test'; const PLUGIN_DIR = `${VAULT}/.obsidian/plugins/voice-note`; // В dev-режиме после каждой сборки копируем плагин в тестовый vault, если он есть на этой машине. const copyToVault = { name: 'copy-to-vault', setup(build) { + build.onStart(() => { + if (!existsSync(VAULT)) console.warn(`[copy-to-vault] vault не найден, копирование пропущено: ${VAULT}. Задайте VOICE_NOTE_VAULT.`); + }); build.onEnd((result) => { if (result.errors.length > 0 || !existsSync(VAULT)) return; mkdirSync(PLUGIN_DIR, { recursive: true });