scrapbox-bundler
使い方
設定画面で設定してからbuild
(未実装)
作るモチベがまったくない
使わないコードがずっとソースに載っていて、管理が面倒
使わないコードの型修正なんて不毛
URLを踏むと即buildする
https://scrapbox-bundler.vercel.app?url=:source&bundle
(旧URL: https://takker99.github.io/scrapbox-bundler
)
e.g.
:url
に含まれている %2F
は /
に変換されてしまうので、Scrapboxのタイトルなどで %2F
を使っている場合は更にencodeをかぶせて %252F
に置き換えておくこと
追加options
bundle
コードを1つにまとめる
minify
コードを最小化する
sourcemap
source mapを埋め込む
reload
cacheを無視する
importmap
url
を基準とした相対パスを使える
external
複数指定する場合は、 external=aaa.css&external=test.png
などとする
url
を基準とした相対パスを使える
❌️ output
download
: ファイルをダウンロードする
newtab
: 新しいタブで開く
self
(default): 同じタブで開く
2024-07-27 廃止
代わりにbuild後のUIに、downloadやコピーボタンを乗せる
メリット
terminalが不要
いちいちterminalを起動してコマンドを打つ手間を省ける
terminalを使えない環境 (mobile端末とか) でもbundleできる
あらかじめ設定したURLをscrapboxのページに貼り付けておけば、リンクをクリックするだけでbundleしたコードを取得できる
仕様とか
scrapboxのコードブロックやGithubのコードのURLを指定して実行する
bundle
や minify
を指定しない場合は、TS→JSの変換を行うだけ
各種optionやbundle対象のソースURLはURL parameterから指定できる
client sideでbundleする
cache機能つき
offlineでも使えるようになる
もっとも、http importで外部からソースを取得するケースがほとんどだろうから、offline対応してもあまりうまみはないのだが
CSS対応
URL parameter
output
に応じてUIのradio buttonを切り替える
?run
でページにアクセスしてすぐbundleを開始できる
疑似的なserverless functionとして使える
reload
でESModuleを再読込する
Denoのように、特定のURLだけ再読込できるような仕組みもつけたい
private projectのコードも取得できるようにするつもりだが、方法は考え中
2021-11-03 17:37:22 やめた
実装したいこと
build Log
色を付ける
scroll barをつける
entryPoint
を使えるか?
URLを入れるとバグるんじゃないかと思って stdin
を代わりに使っているが、もしかしたらいけるかも?
scrapbox json dataの生成処理をworkerに移す
再読込対象のURLを指定できるようにする
warningsとerrorsをUIに表示する
javascript:(async()=>{})()
で囲んだものを出力する
そのまま貼り付けられるよう、予めURLエンコーディングしておく
drag & dropで導入できるように、ボタンを設置しておくのもありかも
scrapboxのUserScript専用builderとして再構築すべきか?
scrapboxのUserScript作成支援に舵を切ったほうがいいのでは
想定
複数のJSやCSSをbuildし、指定したprojectの指定したpageの指定したcode blockに書き込む
UI
URLで生成
今まで通り、client側でbuildさせる
CLIで生成
esbuild-wasmの全コードをworker srcにしてしまうのは良くなかったかも
外部かユーザー定義の fetch
を注入することが難しくなる
バグ
CSS中で
url()
に指定した画像やfontデータもbundleしようとしてバグる
うまいこと回避できないかな……
案
画像系は
external: true
として処理する
これでうまくいく
dependencyの階層が深いとUIが処理落ちする
一回の ResolveInfo | LoadInfo
につき1回だけDOM更新するだけで済ませられる
元となるobjectをnestして持たせる必要もない
DOM構造を階層構造の情報とみなせばいい
2024-07-27 12:15:11 そもそも実装がおかしい
✅️一旦削除する
.css
が .txt
と認識される?
.ts.js
になってしまうのを直す
使っているesbuildのversionを表示する
https://scrapbox.io/api/code/takker/@takker%2FScrapJupyter/mod.ts
のような、
percent encodingされた
/
が含まれているURLが、templateに埋め込む段階だと
https://scrapbox.io/api/code/takker/@takker/ScrapJupyter/mod.ts
と解釈されてしまう
URL parametersに https://scrapbox.io/api/code/takker/@takker%25FScrapJupyter/mod.ts
と与えてもだめ
仕様として我慢するしかないか……
実装
一応worker内で動かすか
Frameworkは多分使わない
DOMをそのままいじるだけで十分だと思う
複雑になりそうだったらPreactを導入する
導入した
Server sideでやったほうがいい?
bundleが5秒以内に終わらないとVercelのserverless functionは強制終了するらしい
client sideでbundleするのが無難か。
https://takker99.github.io/scrapbox-bundler
に公開されるみたい?
あー、index.htmlは https://takker99.github.io/scrapbox-bundler/index.html
に配置しないといけないのか……
JSとCSSへのパスを変えるか。
2021-11-11 12:45:54 deploy完了
deploy方法がかなり強引だが……
./index.html
から ./assets
の中身を取得している
関連
まさかの類似ツール
動機が完全に同じ
拡張機能で実現しているのか~
中途半端にサーバーを経由する必要がないからこっちのほうがいいのかもしれない
PRしたくなってきたやばい