まずは、 Quartz をinstall

公式ドキュメント: Welcome to Quartz 4

npm & nodejs install

sudo apt-get install nodejs

Welcome to Quartz 4に従って実行。

 % npm i
npm ERR! code EBADENGINE
npm ERR! engine Unsupported engine
npm ERR! engine Not compatible with your version of node/npm: @jackyzha0/[email protected]
npm ERR! notsup Not compatible with your version of node/npm: @jackyzha0/[email protected]
npm ERR! notsup Required: {"npm":">=9.3.1","node":"20 || >=22"}
npm ERR! notsup Actual:   {"npm":"9.2.0"}
 
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/hurutoriya/.npm/_logs/2025-01-08T10_13_03_262Z-debug-0.log

apt-get ではいるnodejs, npm のバージョンが古くて Quartzが動かないので、入れ直し

入れなおしたら、ウィザード画面で設定を聞かれる。

hurutoriya@north ~/code/quartz
 % npm i
 
added 557 packages, and audited 558 packages in 4s
 
178 packages are looking for funding
  run `npm fund` for details
 
3 vulnerabilities (1 moderate, 2 high)
 
To address all issues, run:
  npm audit fix
 
Run `npm audit` for details.
 % npx quartz create
 
   Quartz v4.4.0

  Choose how to initialize the content in `/home/hurutoriya/code/quartz/content`
  Symlink an existing folder

  Enter the full path to existing content folder
   /mnt/c/Users/hurut/Dropbox/obsidian/public_blog

  Choose how Quartz should resolve links in your content. This should match Obsidian's link format. You can change this later in `quartz.config.ts`.
│  Treat links as shortest path

└  You're all set! Not sure what to do next? Try:
 Customizing Quartz a bit more by editing `quartz.config.ts`
 Running `npx quartz build --serve` to preview your Quartz locally
 Hosting your Quartz online (see: https://quartz.jzhao.xyz/hosting)

自分はDropbox で同期しているが、Window上からWSLへコピーする選択をしたらオーバーヘッドがすごい。symlink はありがたい 次のエラーは npx quartz build --serveをビルドするために実行したら、以下のエラーが発生。

/mnt/c/Users/hurut/code/quartz$ npx quartz build --serve
 
 Quartz v4.4.0
 
(node:1785) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
 
(Use `node --trace-deprecation ...` to show where the warning was created)
 
Cleaned output directory `public` in 5ms
 ERROR
 
Exiting Quartz due to a fatal error: EIO: i/o error, scandir '/mnt/c/Users/hurut/code/quartz/content/notes'

自分がwsl2でログイン後の挙動を理解していなかったのが原因だが、wslコマンドを実行後にcode を設置する用のdirectory を mkdirで作ってそこで git pull して Quartz を落としてきて実行していたが、この場所は

/mnt/c/Users/xxxx というパスになっており、WSL2からWindows のファイルシステムにアクセスるためのパスらしい。 /mnt/c/ は、Windows の C ドライブが WSL2 内にマウントされている場所を示しているらしい。

で、IOエラーが発生している理由としては、WSLからWindowsのシステムにアクセスして実行しているのが原因でエラーが発生しているので、WSL内で完結するように

mkdir -p ~/xxxx/

とWSL内部でData IOが完結する場所に移動したら解決したみたいで、無事に動き出した

hurutoriya@north ~/projects/quartz %
npx quartz build --serve
 
 Quartz v4.4.0
 
(node:2004) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
Cleaned output directory `public` in 3ms
Found 0 input files from `content` in 4ms
Parsed 0 Markdown files in 775μs
Filtered out 0 files in 3μs
 Emitting output files
Warning: you seem to be missing an `index.md` home page file at the root of your `content` folder. This may cause errors when deploying.
Emitted 12 files to `public` in 77ms
Done processing 0 files in 86ms
Started a Quartz server listening at http://localhost:8080
hint: exit with ctrl+c
[404] /
[200] /index.css
[200] /prescript.js
[200] /postscript.js
[200] /static/contentIndex.json
/mnt/c/Users/hurut/code/quartz/* ~/projects/quartz//mnt/c/Users/hurut/code/quartz/* ~/projects/quartz/

ホットリロード対応と書いてあるんだが、編集しても反映されない…

  • --serve: run a local hot-reloading server to preview your Quartz

--serveオプションでホットリロードが動くはずなのだが… config ファイルは編集したら、Obsidian側の変更も即反映されるので、少し手間はかかるが、VSCodeで上書き保存のCtrl+Sを押してホットロードで対応することにした