Obsidian v1.7.1์์ โDebug startup timeโ ๋ทฐ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด ๋ทฐ๋ ์ฑ์ด ์์๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ํ๋ ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ์ฑ ๋ก๋ ์๊ฐ์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. Obsidian์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ๋ณด์ฅํ๊ธฐ ์ํด, Obsidian์ ์ฌ์ฉ์๊ฐ ์ฑ๊ณผ ์ํธ ์์ฉํ๊ธฐ ์ ์ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ๋ก๋ํฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ ๋ก๋ ์๊ฐ์ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์๋์?
- ํ๋ฌ๊ทธ์ธ
onload
๋ฅผ ๋จ์ํํ์ธ์. - ํ๋ฌ๊ทธ์ธ ๋ทฐ ์์ฑ์๋ฅผ ํ์ธํ์ธ์.
- ์ผ๋ฐ์ ์ธ ํจ์ ์ ํผํ์ธ์.
๋จผ์ , ์ฌ์ด ๊ฒ๋ถํฐ ์์ํฉ์๋ค. ํ๋ฌ๊ทธ์ธ์ ํ๋ก๋์
๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ธ์. esbuild, rollup ๋๋ webpack๊ณผ ๊ฐ์ ๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, โ๊ฐ๋ฐโ ๋น๋ ๋๋ โํ๋ก๋์
โ ๋น๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ํ๋ก๋์
๋น๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ์๊ณ , ๋ ๋นจ๋ฆฌ ๋ก๋๋๋ฉฐ, ํ
์คํธ์๋ง ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ๋ฆด๋ฆฌ์ค๋ฅผ ์์ฑํ ๋ main.js
ํ์ผ์ด ํ๋ก๋์
๋น๋์ธ์ง ํ์ธํ์ธ์.
๋น๋ ๊ตฌ์ฑ์์ ํ๋ฌ๊ทธ์ธ ์ฝ๋๋ฅผ ์ต์ํํ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ฒด ํ๋ฌ๊ทธ์ธ ํ์ผ ํฌ๊ธฐ๊ฐ ์์์ ธ ํ๋ฌ๊ทธ์ธ์ด ๋์คํฌ์์ ์ฝ๊ณ ๋ก๋ํ๋ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
๋ค์์ผ๋ก, ํ๋ฌ๊ทธ์ธ์ onload
ํจ์ ๋ด์์ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์
์ ์ํํ์ง ์๋์ง ํ์ธํ์ธ์. onload
ํจ์๋ ํ๋ฌ๊ทธ์ธ ์ด๊ธฐํ์ ํ์ํ ์ฝ๋๋ง ํฌํจํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ช
๋ น์ด, ๋ทฐ ์ ํ ๋ฐ ๋งํฌ๋ค์ด ํ์ฒ๋ฆฌ๊ธฐ ๋ฑ๋ก๊ณผ ๊ฐ์ ์ฑ ๋ฑ๋ก์ด ํฌํจ๋ฉ๋๋ค. ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์
์ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉ์ ์ ์ ๋ทฐ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์ ์ ์ ๋ทฐ ์์ฑ์์ ์ ์ํ์ธ์. Obsidian์ด ์ด๋ฆด ๋, ์ฌ์ฉ์์ ์์ ๊ณต๊ฐ์ ์ ์ฅ๋ ๋ชจ๋ ๋ทฐ๋ฅผ ๋ค์ ์ฝ๋๋ค. ๋ทฐ๊ฐ ๋ก๋๋๋ฉด(๊ทธ๋ฆฌ๊ณ ์ง์ฐ๋์ง ์์ผ๋ฉด), ์ด๋ ์ฑ ๋ก๋ ์๊ฐ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์์ ์ ์คํํ๊ณ ์ถ์ ์ฝ๋๊ฐ ์๋ค๋ฉด ์ด๋์ ๋์ด์ผ ํ๋์?
๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ์ฝ๋๋ฅผ onLayoutReady
์ฝ๋ฐฑ ์์ ๋ํํ๊ณ ์ถ์ ๊ฒ์
๋๋ค. ์ด๋ฌํ ์ฝ๋ฐฑ์ ์ง์ฐ๋๋ฉฐ Obsidian ๋ก๋ฉ์ด ์๋ฃ๋ ํ์๋ง ํธ์ถ๋ฉ๋๋ค.
ํจ์
vault.on('create')
์์
Obsidian์ vault ์ด๊ธฐํ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก, ๋ชจ๋ ํ์ผ์ ๋ํด create
๋ฅผ ํธ์ถํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ด ์๋ก ์์ฑ๋ ํ์ผ์ ๋ฐ์ํด์ผ ํ๋ ๊ฒฝ์ฐ, ๋จผ์ ์์
๊ณต๊ฐ์ด ์ค๋น๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. vault ์ด๋ฒคํธ ๋ฑ๋ก์ onLayoutReady
์ฝ๋ฐฑ ๋ด์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์
๊ณต๊ฐ์ด ์์ ํ ์ด๊ธฐํ๋ ๋๊น์ง ์ด๋ฒคํธ์ ๋ฐ์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
์ต์ A. ๋ ์ด์์์ด ์ค๋น๋์๋์ง ํ์ธ
class MyPlugin extends Plugin {
onload(app: App) {
super(app);
this.registerEvent(this.app.vault.on('create', this.onCreate, this));
}
onCreate() {
if (!this.app.workspace.layoutReady) {
// ์์
๊ณต๊ฐ์ด ์์ง ๋ก๋ฉ ์ค์ด๋ฏ๋ก ์๋ฌด๊ฒ๋ ํ์ง ์์
return;
}
// ...
}
}
์ต์ B. ๋ ์ด์์์ด ์ค๋น๋๋ฉด ํธ๋ค๋ฌ ๋ฑ๋ก
class MyPlugin extends Plugin {
onload(app: App) {
super(app);
this.app.workspace.onLayoutReady(() => {
this.registerEvent(this.app.vault.on('create', this.onCreate, this));
});
}
onCreate() {
// ...
}
}
ํ๋ฌ๊ทธ์ธ ์ต์ ํ์ ๋ํ ์ถ๊ฐ ๋์์ด ํ์ํ๋ฉด ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ๋์์ ์์ฒญํ์ธ์!