Obsidian Build a plugin - swkim0128/PARA GitHub Wiki

1๋‹จ๊ณ„: ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‹ค์šด๋กœ๋“œ

Obsidian์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก .obsidian/plugins ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

  1. ํ„ฐ๋ฏธ๋„์—์„œ plugins ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
cd path/to/vault
mkdir -p .obsidian/plugins
cd .obsidian/plugins
  1. Git์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ˜ํ”Œ ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋ก 
git clone https://github.com/obsidianmd/obsidian-sample-plugin.git

๐Ÿ“Œ ์ฐธ๊ณ : ํ•ด๋‹น ์ €์žฅ์†Œ๋Š” GitHub ํ…œํ”Œ๋ฆฟ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด, GitHub ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.


2๋‹จ๊ณ„: ํ”Œ๋Ÿฌ๊ทธ์ธ ๋นŒ๋“œ

Obsidian์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

  1. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
cd obsidian-sample-plugin
  1. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜
npm install
  1. ์†Œ์Šค ์ฝ”๋“œ ์ปดํŒŒ์ผ
npm run dev

๐Ÿ”น ์ด ๋ช…๋ น์–ด๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋ฉฐ, ์ฝ”๋“œ ์ˆ˜์ • ์‹œ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.


3๋‹จ๊ณ„: ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์„ฑํ™”

Obsidian์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์„ค์ •์—์„œ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Obsidian์—์„œ ์„ค์ •(Settings) ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ์‚ฌ์ด๋“œ ๋ฉ”๋‰ด์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ(Community plugins) ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์„ฑํ™”(Turn on community plugins) ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ(Installed plugins) ๋ชฉ๋ก์—์„œ Sample Plugin ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์ด์ œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


4๋‹จ๊ณ„: ํ”Œ๋Ÿฌ๊ทธ์ธ ์ •๋ณด ์—…๋ฐ์ดํŠธ

ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด manifest.json ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. manifest.json ํŒŒ์ผ์„ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋กœ ์—ฝ๋‹ˆ๋‹ค.
  2. id ๊ฐ’์„ "hello-world" ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  3. name ๊ฐ’์„ "Hello world" ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  4. ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋” ์ด๋ฆ„์„ id ๊ฐ’๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  5. Obsidian์„ ์žฌ์‹œ์ž‘ ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์„ค์น˜๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชฉ๋ก์—์„œ ์ƒˆ๋กœ์šด ์ด๋ฆ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ“Œ manifest.json์„ ์ˆ˜์ •ํ•œ ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ Obsidian์„ ์žฌ์‹œ์ž‘ํ•ด์•ผ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.


5๋‹จ๊ณ„: ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”๋“œ ์ˆ˜์ •

ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋ฆฌ๋ณธ ์•„์ด์ฝ˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  ํด๋ฆญํ•˜๋ฉด ์ธ์‚ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. main.ts ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ํด๋ž˜์Šค ์ด๋ฆ„์„ MyPlugin์—์„œ HelloWorldPlugin์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  3. obsidian ํŒจํ‚ค์ง€์—์„œ Notice๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
import { Notice, Plugin } from 'obsidian';
  1. onload() ๋ฉ”์„œ๋“œ์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
this.addRibbonIcon('dice', 'Greet', () => {
  new Notice('Hello, world!');
});
  1. Obsidian์„ ์ƒˆ๋กœ๊ณ ์นจํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฉ๋ฒ• 1: ์ปค๋งจ๋“œ ํŒ”๋ ˆํŠธ์—์„œ Reload app without saving ์‹คํ–‰
  • ๋ฐฉ๋ฒ• 2: ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒจ๋„์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™” ํ›„ ๋‹ค์‹œ ํ™œ์„ฑํ™”

โœ… ์ด์ œ Obsidian์˜ ์™ผ์ชฝ ๋ฆฌ๋ณธ์— ๐ŸŽฒ (์ฃผ์‚ฌ์œ„) ์•„์ด์ฝ˜์ด ์ƒ์„ฑ๋˜๋ฉฐ, ํด๋ฆญํ•˜๋ฉด "Hello, world!" ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Hot Reload ๊ธฐ๋Šฅ์„ ์›ํ•˜๋ฉด, Hot-Reload ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ