takker用UserScriptのbundle設定
一つずつCLIでcommandを叩くのが面倒なので、各project用UserScriptを一度にbundleしてjson fileにできるscriptを新しく作った
shdeno run -A --unstable https://scrapbox.io/api/code/takker/takker用UserScriptのbundle設定/build.ts
build.tsimport {run} from '../UserScriptをbundleするDeno_script/script.ts';
const fileNames = ['takker-memex', 'takker', 'any-project'];
let codes: {[key: string]: string} = {};
bundleする
build.tsfor (const fileName of fileNames) {
const {outputFiles} = await run(
`https://scrapbox.io/api/code/takker/takker用UserScriptのbundle設定/${fileName}.js`,
{
'../date-fns.min.js/script.js': 'https://deno.land/x/date_fns@v2.15.0/index.js',
},
{
external: [
'/api/code/takker-memex/GYAZO_ACCESS_TOKEN/auth.js',
'/api/code/takker-memex/Google_API_for_Scrapbox/script.js',
'/api/code/takker-memex/takkerのGoogle_Calendar/script.js',
],
charset: 'utf8',
bundle: true,
minify: true,
write: false, // 標準出力やfileにbundleしたコードを出力しない
sourcemap: 'inline',
}
);
codes[fileName] = outputFiles?.[0]?.text ?? '';
}
build.tslet json: {pages: {title: string; lines: string[];}[];} = {pages: []};
for (const key in codes) {
const page = {
title: `for-${key}`,
lines: [
`for-${key}`,
`[/${key}]で使うUserScript`,
' [UserScriptをbundleするDeno script]でbundleした',
' 設定ファイルは[takker用UserScriptのbundle設定]に置いてある',
'',
'code:script.js',
...codes[key].split('\n').map(line => ` ${line}`),
],
};
json.pages.push(page);
}
await Deno.writeTextFile('import.json', JSON.stringify(json));
takker-memex.jsimport '../import/common.js';
import '../import/takker-memex.js';
shdeno 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/takker用UserScriptのbundle設定/takker-memex.js --bundle --minify --external=/api/code/takker-memex/GYAZO_ACCESS_TOKEN/auth.js --external=/api/code/takker-memex/Google_API_for_Scrapbox/script.js --external=/api/code/takker-memex/takkerのGoogle_Calendar/script.js --charset=utf8 --outfile=takker-memex.min.js
takker.jsimport '../import/common.js';
import '../import/takker.js';
shdeno 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/takker用UserScriptのbundle設定/takker.js --bundle --minify --external=/api/code/takker-memex/GYAZO_ACCESS_TOKEN/auth.js --external=/api/code/takker-memex/Google_API_for_Scrapbox/script.js --external=/api/code/takker-memex/takkerのGoogle_Calendar/script.js --charset=utf8 | xsel
共通
shdeno 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/import/common.js --bundle --minify --external=/api/code/takker-memex/GYAZO_ACCESS_TOKEN/auth.js --external=/api/code/takker-memex/Google_API_for_Scrapbox/script.js --external=/api/code/takker-memex/takkerのGoogle_Calendar/script.js --charset=utf8 --outfile=any-project.min.js
まとめて一つのjsonに入れられるようにした
shdeno run --allow-read=./ --allow-write=./ https://scrapbox.io/api/code/takker/takker用UserScriptのbundle設定/make-json.ts takker takker-memex any-project
make-json.tsimport { parse } from "https://deno.land/std@0.97.0/flags/mod.ts";
type Page = {title: string; lines: string[];};
const {_: projects} = parse(Deno.args);
const json: {pages: Page[]} = {pages: []};
for (const project of projects) {
const script = await Deno.readTextFile(`${project}.min.js`);
const page = {
title: `for-${project}`,
lines: [
`for-${project}`,
`[/${project}]で使うUserScript`,
' [UserScriptをbundleするDeno script]でbundleした',
' 設定ファイルは[takker用UserScriptのbundle設定]に置いてある',
'',
'code:script.js',
...script.split('\n').map(line => ` ${line}`),
],
};
json.pages.push(page);
}
await Deno.writeTextFile('import.json', JSON.stringify(json));