from-programming-notes
ここでtakker.icon用にbundleする
2023-05-01 04:51:05 もう使っていない
bundle方法
%2Fがdecodeされないよう、二重にencodeをかけた%252Fを使っている
(deprecated)コピペできるコードサイズではなくなってきたので、importを使うことにした
code:sh
code:build.ts
import {run} from '../UserScriptをbundleするDeno_script/script.ts';
const {outputFiles} = await run(
https://scrapbox.io/api/code/takker/from-programming-notes/index.js,
{},
{
external: [
'../scrapbox-parser@7.1.0/script.js',
'../scrapbox-access-nodes@0.1.0/script.js',
'../scrapbox-cursor-position-2/script.js',
'../scrapbox-dom-accessor/script.js',
'../scrapbox-keyboard-emulation/script.js',
'../date-fns.min.js/script.js',
],
charset: 'utf8',
bundle: true,
minify: true,
write: false, // 標準出力やfileにbundleしたコードを出力しない
sourcemap: 'inline',
}
);
const code = (outputFiles?.0?.text ?? '') // /takker用にimport pathやその他変数を書き換える
.replaceAll('履歴スライダー', 'Open commit viewer')
.replaceAll('addMenu', 'addItem')
.replaceAll('scrapbox-cursor-position-2', 'scrapbox-cursor-position-6')
.replaceAll('scrapbox-keyboard-emulation', 'scrapbox-keyboard-emulation-2');
const json: {pages: {title: string; lines: string[];}[];} = {
pages: [{
title: 'from-programming-notes-scripts',
lines: [
'from-programming-notes-scripts',
'',
'code:script.js',
...code.split('\n').map(line => ${line}),
],
}],
};
await Deno.writeTextFile('import.json', JSON.stringify(json));
(deprecated)以下を実行してコードを貼り付ける
code:sh
deno run --allow-net --allow-read --allow-write --allow-run --allow-env --unstable https://scrapbox.io/api/code/takker/UserScriptをbundleするDeno_script/build.ts "https://scrapbox.io/api/code/takker/from-programming-notes/index.js" --bundle --minify --external=../scrapbox-parser@7.1.0/script.js --external=../scrapbox-access-nodes@0.1.0 /script.js --external=../scrapbox-cursor-position-2/script.js --external=../scrapbox-dom-accessor/script.js --external=../scrapbox-keyboard-emulation/script.js --external=../date-fns.min.js/script.js --charset=utf8 | sed -e 's/履歴スライダー/Open commit viewer/' | sed -e 's/addMenu/addItem/' | sed -e 's/scrapbox-cursor-position-2/scrapbox-cursor-position-6/g' | sed -e 's/scrapbox-keyboard-emulation/scrapbox-keyboard-emulation-2/g' | xsel befor bundling
code:importmap.json
{
"imports": {
code:importmap.json
code:importmap.json
}
}
謎のエラーで、Preactが止まってしまう
別projectのリンクを参照できないのは痛いが、一旦外すしかない
2022-01-19 10:52:19 /colorをアイコンに加えた code:index.js
import "../../programming-notes/scrapbox-incremental-fulltext-search/sample.js";
code:index-purged.js
import { mount as mountCompletion } from "../../programming-notes/external-completion@0.4.0/script.js";
const watchListIds = Object.keys(
JSON.parse(localStorage.getItem("projectsLastAccessed"))
);
const iconIds = [
'57b3fe09ec2b330f00f15382', // /icons Icons
'5ebf80b491582c001e38c967', // /Icons2 Icons2
'5adc2250d5caf30014910a83', // /emoji emoji
"5d5e31dffb032100170cd31c", // /color color
"61fb0a7daea10100202d1372", // /vim-jp-emojis vim-jp-emojis/
];
const internalIds = [
'5f2f02f3c4a48d00237e1534', // /takker くたくたじゅうよん
'5ed109bc910d920023cd8fd5', // /takker-memex takker's memex
'5edea5a1df929a001ea458a7', // /takker-collaboration-1 takker-collaboration-1
'5f47d1468338f2001ed14791', // /takker-private takker-private
'607336aac050e6002217041c', // /takker-books
'5c761758dfd2e10017490824', // /programming-notes programming-notes
];
switch (scrapbox.Project.name) {
case 'hub':
case 'villagepump':
case 'verbalizing-community':
internalIds.push(
'5c53b72c0f34df0017239d97', // /hub hub
'5e2455255664e000177a46fc', // /villagepump 井戸端
'608eae2195c39d001cdf60ff', // /verbalizing-community 言語化コミュニティ『シナプス』
);
break;
case 'programming-notes':
case 'customize':
case 'scrapboxlab':
internalIds.push(
'5c26f344f7bb4f0017abe8c5', // /deno-ja deno-ja
'592e2353c23398001181e38a', // /customize Scrapboxカスタマイズコレクション
'5af3b5e49df3fd001499c6af', // /scrapboxlab Scrapbox研究会
);
break;
}
一旦外部プロジェクトの補完を止める
Indexed DBを圧迫する
なんかこいつが原因でいつもCPUが唸っている気がする
そもそも殆ど使っていない
挙動が壊れているので余り使う気に慣れない
アイコン補完とinternal補完はそのままにする
挙動が壊れているものの、それなりに使っている
他のprojectで自分が書いたリンクを探すときに便利
code:index-purged.js
// watchListから現在projectと別の補完で使うprojectを除く
const res = await fetch(/api/projects/${scrapbox.Project.name});
const { id } = await res.json();
/*
const projectIds = watchListIds
*/
// 起動
mountCompletion({
// internal-completionに使うprojectのid list
internal: internalIds.filter(_id => _id !== id),
// external-completionに使うprojectのid list
//external: projectIds,
// emoji-completionに使うprojectのid list
emoji: iconIds,
});