Plugin ํด๋ž˜์Šค๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ(lifecycle)๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๋“ค์„ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค:

import { Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    // ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  }
  async onunload() {
    // ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์„ค์ •ํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  }
}

ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒ๋ช…์ฃผ๊ธฐ

onload()๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Obsidian์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๊ณณ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

onunload()๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋น„ํ™œ์„ฑํ™”๋  ๋•Œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋น„ํ™œ์„ฑํ™”๋œ ํ›„ Obsidian์˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ ค๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ์—ฌ๊ธฐ์„œ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฉ”์†Œ๋“œ๋“ค์ด ์–ธ์ œ ํ˜ธ์ถœ๋˜๋Š”์ง€ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด, ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ์–ธ๋กœ๋“œ๋  ๋•Œ๋งˆ๋‹ค ์ฝ˜์†”์— ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ฝ˜์†”์„ ๋ณด๋ ค๋ฉด:

  1. Windows ๋ฐ Linux์—์„œ๋Š” Ctrl+Shift+I๋ฅผ, macOS์—์„œ๋Š” Cmd-Option-I๋ฅผ ๋ˆŒ๋Ÿฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ† ๊ธ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ฐฝ์—์„œ ์ฝ˜์†” ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
import { Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    console.log('loading plugin')
  }
  async onunload() {
    console.log('unloading plugin')
  }
}