Simpesys / Simpesys / κΈ°λŠ₯ / μΊμ‹œ

μΊμ‹œ

SimpesysλŠ” 이전에 μƒμ„±ν•œ λ¬Έμ„œμ˜ HTML을 μž¬μ‚¬μš©ν•˜λŠ” 증뢄 λ Œλ”λ§μ„ μ§€μ›ν•œλ‹€. μΊμ‹œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ‚΄μš©κ³Ό 섀정이 같은 λ¬Έμ„œμ— λŒ€ν•œ λ Œλ”λ§ 과정을 μƒλž΅ν•¨μœΌλ‘œμ¨ λΉŒλ“œ μ„±λŠ₯을 κ°œμ„ ν•  수 μžˆλ‹€. μΊμ‹œλŠ” 기본적으둜 λΉ„ν™œμ„±ν™”λ˜μ–΄ μžˆλ‹€. init({ cache: true })을 ν˜ΈμΆœν•˜λ©΄ μΊμ‹œλ₯Ό ν™œμ„±ν™”ν•  수 μžˆλ‹€.

같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ 두 개 μ΄μƒμ˜ Simpesys μΈμŠ€ν„΄μŠ€ 사이에 μΊμ‹œλ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•΄μ„œλŠ” 이전 μΈμŠ€ν„΄μŠ€μ˜ μΊμ‹œλ₯Ό μ „λ‹¬ν•˜λ©΄ λœλ‹€.

import { Simpesys } from "@simpesys/core";

const first = await new Simpesys().init({ cache: true });

const second = await new Simpesys().init({
  cache: {
    previous: first.getCache(),
  },
});

μœ„ μ˜ˆμ‹œλŠ” 첫 번째 μΈμŠ€ν„΄μŠ€μ˜ μΊμ‹œλ₯Ό getCache()둜 μ–»μ–΄ 두 번째 μΈμŠ€ν„΄μŠ€μ˜ cache.previous에 μ „λ‹¬ν•œλ‹€.

μ˜΅μ…˜ νƒ€μž… μ„€λͺ…
cache.version string μΊμ‹œλ₯Ό κ΅¬λΆ„ν•˜λŠ” 버전.
cache.previous Cache μž¬μ‚¬μš©ν•  μΊμ‹œ.

renderInternalLink, configureMarkdownConverter λ“± λ Œλ”λ§ 훅을 직접 μ§€μ •ν•œ κ²½μš°μ—λŠ” 이전 μΊμ‹œλ₯Ό μž¬μ‚¬μš©ν•  λ•Œ cache.version 값을 λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•΄μ•Ό ν•œλ‹€. ν›…μ˜ κ΅¬ν˜„μ„ λ³€κ²½ν•˜λ©΄ 버전을 κ°±μ‹ ν•œλ‹€.

await new Simpesys(config).init({
  cache: { previous, version: "v2" },
});

ν”„λ‘œμ„ΈμŠ€λ₯Ό μž¬μ‹œμž‘ν•˜λ©΄ 인메λͺ¨λ¦¬ μΊμ‹œλŠ” 사라진닀. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μΊμ‹œλ₯Ό νŒŒμΌμ‹œμŠ€ν…œμ— μ €μž₯해두면 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μΈμŠ€ν„΄μŠ€μ—μ„œ μž¬μ‚¬μš©ν•  수 μžˆλ‹€.

import { type Cache, Simpesys } from "@simpesys/core";

const cacheDirectory = ".simpesys";
const cachePath = `${cacheDirectory}/cache.json`;

let previous: Cache | undefined;

try {
  previous = JSON.parse(await Deno.readTextFile(cachePath));
} catch (error) {
  if (!(error instanceof Deno.errors.NotFound || error instanceof SyntaxError)) {
    throw error;
  }
}

const simpesys = await new Simpesys().init({
  cache: { previous },
});

const next = simpesys.getCache();

if (next) {
  await Deno.mkdir(cacheDirectory, { recursive: true });
  await Deno.writeTextFile(cachePath, JSON.stringify(next));
}