Logseq Publish のインストールメモ(大体 ubuntu のせい)
Logseq でできた graph を, static site としてホストしたい. 非公式の日本語マニュアルにいい情報 (scrapbox.io) があるが,
- Logseq じたいからエクスポートが可能
- コマンドラインからやるなら,現状公式が github action を主眼に提供している logseq/publish-spa が良さそうなのだが,インストールのハマりどころ.
今回は珍しくWSL 2.0 なので,ubuntu (22.04 LTS) ベースの話になる.結局 apt
で入るバージョンが古いことが色んな環境構築で色々複雑にしている(→ snap
とか自分でソースからビルドするとか,その後の管理も複雑化する)ことが多い感触があって,周囲の初心者に勧めていいものか微妙なところも感じるんですよねえ.
現時点の readme から
To use this as a CLI locally, first install babashka and clojure. Then:
$ git clone https://github.com/logseq/publish-spa
# If you have yarn 1.X:
$ cd publish-spa && yarn install
$ yarn global add $PWD
# Otherwise use npm:
$ cd publish-spa && npm i -g
This CLI depends on Logseq being checked out locally in order to build the static directory for it. If you haven’t built the static directory, you’ll need to do it once (takes some time):
$ git clone https://github.com/logseq/logseq && cd logseq
# Switch to a stable version
$ git checkout 0.10.6
# Install deps and build static directory
$ yarn install --frozen-lockfile && yarn gulp:build && clojure -M:cljs release publishing
Then use the CLI from any logseq graph directory!
$ logseq-publish-spa out
Parsing 306 files...
Export public pages and publish assets to out successfully 🎉
babashka
- 公式に則ればよいっぽい…のだが,
git clone
して install をそのまま走らせた.
Logseq の static/ のビルド
このステップで yarn が必要になるっぽい…のだが, apt で入る yarn は古くて --frozen-lockfile
オプションがない.やむなくこれもインストールしに行く.corepack
が良しなにしてくれるっぽいことが 書いてある.
npm install -g corepack
後から気付くことだがバージョンの非互換性があるみたいで, logseq 側の readme は 古い.
clojure も古い
以下のように失敗する
Execution error (FileNotFoundException) at java.io.FileInputStream/open0 (FileInputStream.java:-2). -M:cljs (No such file or directory)
Logseq のドキュメントでは 手当の記載がある,要するに apt でインストールされた clojure が古い.
(If you run into Execution error (FileNotFoundException) at java.io.FileInputStream/open0 (FileInputStream.java:-2). -M:cljs (No such file or directory), it means you have a wrong Clojure version installed. Please uninstall it and follow the instructions linked.)
結局連れていかれるのはこれ なんですけど…
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
chmod +x linux-install.sh
sudo ./linux-install.sh
ここまでやると
yarn install --frozen-lockfile && yarn gulp:build && clojure -M:cljs release publishing
が成功する…はず(諸事情で次のステップから一度戻ってここを2回目走らせるとうまくいく,ということがあったが,原因がよくわからない).
Readme にある yarn は罠
- 上に書いた通り
$ cd publish-spa && yarn install
→$ yarn global add $PWD
は yarn のバージョン違いで失敗する - おとなしく
$ cd publish-spa && npm i -g
でやりましょう
static/ の指定が必要
- これで一応
logseq-publish-spa
が走るようになるのだが,logseq static directory が../logseq/static
がデフォルトという微妙な状況で,明示する必要がある
# graph のあるディレクトリで
logseq-publish-spa ../publish/ -s ~/src/logseq/static/
で一応成功するはず.妙にハマりどころが多いが,多くは Ubuntu の apt で入るバージョンが思ったより色々古いことに起因している.結構苦労した割にあまり食わせられるオプションが多くなさそうで悲しみ.