Info

Quartz๋Š” preBuild๋ฅผ ํ†ตํ•ด md โ†’ html๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ƒ์„ฑ๋œ ์ •์  ํŒŒ์ผ์„ public directory์—์„œ ๊ด€๋ฆฌํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค.

Process

npx quartz build๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ์‹œ๋„

Process Cli commandLine

/quartz/bootstrap-cli.mjs ํŒŒ์ผ์˜ build ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ๋™์ž‘ํ•˜๋Š” handleBuild() ์‹คํ–‰.

  • yargs, hideBin ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ.
  • create, update, restore, sync, build ๋ช…๋ น์–ด ์ •์˜.

Build Handling

/quartz/cli/handlers/js ํŒŒ์ผ์˜ handleBuild() ํ•จ์ˆ˜ ์‹คํ–‰.

  1. esbuilder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ build context ์ƒ์„ฑ.
  2. sass Plugin๊ณผ inline-script-loader Plugin์„ ์‚ฌ์šฉํ•˜์—ฌ sass, script ์ฒ˜๋ฆฌ.
  3. Build process ๋™๊ธฐํ™” ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด Mutex ์ƒ์„ฑ.
  4. build() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ์‹คํ–‰.
    1. /quartz/build.tsํŒŒ์ผ์„ ๋นŒ๋“œํ•œ ๊ฒฐ๊ณผ๋ฌผ mjs ํŒŒ์ผ์„ cache๋กœ ์ €์žฅ.
    2. ์ €์žฅ๋œ ./quartz/.quartz-cache/transpiled-build.mjs ํŒŒ์ผ์„ ์‚ฌ์šฉ ํ•˜์—ฌ Quartz๋ฅผ ๋นŒ๋“œ.

Build Quartz

/quartz/build.tsํŒŒ์ผ์„ buildํ•œ ๊ฒฐ๊ณผ๋ฌผ์ธ ./quartz/.quartz-cache/transpiled-build.mjs์˜ buildQuartz() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ.

  1. ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ ์ดˆ๊ธฐํ™”
    1. BuildId ์ฑ„๋ฒˆ
    2. setting ์ฃผ์ž…
  2. ์„ค์ •๋œ Plugin ๋กœ๋“œ ๋ฐ ์ดˆ๊ธฐํ™”
    1. Transformers
    2. Filters
    3. Emitters
  3. output dir ์„ค์ •
    • default: /public
  4. target source ํƒ์ƒ‰
    • glob๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ /content ๋‚ด๋ถ€์˜ ๋ชจ๋“  .mdํŒŒ์ผ์„ ํƒ์ƒ‰
  5. markdown ํŒŒ์‹ฑ
    • parseMarkdown()ํ•จ์ˆ˜ ์‚ฌ์šฉ.
    • Transformers๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .mdํŒŒ์ผ์„ html๋กœ ํŒŒ์‹ฑ
    • ์ฐธ๊ณ : Transformers
  6. contents ํ•„ํ„ฐ๋ง
    • filterContent()ํ•จ์ˆ˜ ์‚ฌ์šฉ.
    • Filters๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ frontmatter ๋˜๋Š” ํŒŒ์ผ์˜ ์ง์ ‘์ ์ธ ์ •๋ณด๋ฅผ ํ†ตํ•ด ๋…ธ์ถœํ•˜์ง€ ์•Š์„ contents ํ•„ํ„ฐ๋ง.
    • ์ฐธ๊ณ : Filters
  7. contents ์ถœ๋ ฅ
    • emitContent() ํ•จ์ˆ˜ ์‚ฌ์šฉ.
    • fast build๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜์กด์„ฑ ๊ทธ๋ž˜ํ”„์— ๋”ฐ๋ผ ๊ด€๋ จ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธ ํ•จ.
    • ํŒŒ์‹ฑ ๋ฐ ํ•„ํ„ฐ๋ง๋œ contents๋ฅผ ์ •์  html ํŒŒ์ผ๋กœ ์ถœ๋ ฅ (output dir)
    • ์ฐธ๊ณ : Emitters