pin-diary-4を自分のプロジェクトで使う
pin-diary-4を自分のプロジェクトで使ってみたかったので使う手順を書く基素.icon
これを上からやる
このコードをコピーして適当なページのコードブロックに貼る
pin-diary-4#618c94211280f00000398123
ここでは例のため、YOUR_PROJECT/pin-diary-4のページにscript,jsというコードブロックをに作ったとする
生成されたコードのうちvillagepumpを自分のプロジェクト名(YOUR_PROJECT)に変更する
自分のページに次を追加する
code:script.js
await import("/api/code/YOUR_PROJECT/pin-diary-4/script.js");
UserScriptをロードしてページリロードすると今日のページが作られている
テンプレートの中身を編集したい時は?
日記ページのtemplateを編集する
この場合pin-diary-4を自分のプロジェクトで使う#61f8332b774b1700003e7ea1のコードではなくpin-diary-4をそのまま自分のプロジェクトにコピーしてimport {getTemplate} from "../日記ページのtemplate/diary.ts";あたりを修正する必要がありそう基素.icon
private projectだとbundleが失敗する
tsからjsに変換する必要があり、/takker/scrapbox-bundlerを使ってbundleしようとしてコードが取得できずに失敗する
/nishio/ScrapboxのprivateプロジェクトのAPIを叩くと組み合わせたらprivateでもなんとかなるかな?
scrapbox-bundlerは非公開projectのAPIを叩けませんtakker.icon
connect.sidを使っていないので……
そしてDenoでもできないです……
bearer tokenしか対応していないhttps://deno.land/manual@v1.18.1/linking_to_external_code/private
なるほど(この情報は日本語でググっても1ページ目に出てこない情報だった)基素.icon
とりあえず雑に書いてみました:/deno-ja/private moduleを使うtakker.icon
感謝基素.icon
private projectのcodeを使ったbundleは想定していなかったので迂闊でした……takker.icon
TSではなくJSならBundleから除外すればいいだけなので問題は起きないのですが
web browserが勝手にconnect.sidを設定してJSをimportしてくれる
なるほど基素.icon
TSはブラウザによしなにさせられないのでどうにもなりません
対策
privateではなくpublicでやる
自分はこの方法を使っていますtakker.icon
API tokenなどのprivate情報だけprivate projectのpure JSファイルに置いている
他の人の例:yosider.icon/yosider-scripts
なるほどyosider#603a61a4e5172d0000bc7b42みたいにするんだ基素.icon
❌scrapbox-bundlerにconnect.sidを入れるoptionをつける
認証情報をURL parameterにつけたら流石にまずいtakker.icon基素.icon
UserScriptをbundleするDeno scriptにconnect.sidをつけるoptionを入れる
すぐ実装できそうなのはこれtakker.icon
fetchに渡せばいいだけ
これをやるとCLIでdenoを実行するとbundleされた結果がterminalに出るようになるのかな基素.icon
今回のケースだとpin-diary-4と日記ページのtemplateが複数ページに分かれているのでこれを使えば両方とってきてくれて便利になる、という理解をしました
ですですtakker.icon
scrapbox userscriptとして動くbundlerを作る
scrapbox.ioとstorage.googleapi.com内のコードなら何でも使える
scrapbox.io外でもTamperMonkeyと組み合わせれば制限なく使える
これが一番現実的かも?takker.icon
追加でUserScriptを入れるのが面倒くさすぎる
worker codeつきなので、2回bundleしてコピペする必要あり