This project is set up as both a development environment and a test Obsidian vault.
Install dependencies:
bun install
Build the plugin:
bun run build
Or run in watch mode for development:
bun run dev
Open this folder as a vault in Obsidian:
The plugin files are symlinked from .obsidian/plugins/obsidian-metadata-tool/ to the build output:
main.js → main.js (in project root)manifest.json → manifest.jsonThis means any changes you make will be reflected immediately after rebuilding.
src/bun run devThree sample notes are provided for testing:
To test the plugin:
Before using the plugin, you need to:
bun run dev - Watch mode with auto-rebuildbun run build - Production build (includes type checking and linting)bun run check - Run Biome checks and markdownlintbun run typecheck - TypeScript type checking onlybun run lint - Run Biome lintingbun run lint:fix - Auto-fix linting issuesbun run format - Format code with Biomebun run format:check - Check formatting without changesbun run validate - Full validation before releaseTo debug the plugin:
console.log() statements in your code.
├── src/
│ ├── main.ts # Plugin entry point
│ ├── settings.ts # Settings interface
│ ├── settingsTab.ts # Settings UI
│ ├── metadata.ts # Metadata generation logic
│ └── utils.ts # Utility functions (API calls, etc.)
├── scripts/
│ └── validate-plugin.ts # Pre-release validation
├── .obsidian/
│ └── plugins/
│ └── obsidian-metadata-tool/ # Symlinked plugin files
├── main.js # Build output (committed to repo)
├── manifest.json # Plugin manifest
├── package.json # NPM dependencies
└── tsconfig.json # TypeScript configuration
src/bun run dev)bun run build at least once.obsidian/plugins/obsidian-metadata-tool/