From ca1a4a31706d0c03673fe4c414c645ed826b21c6 Mon Sep 17 00:00:00 2001 From: shu Date: Wed, 19 Aug 2026 15:56:06 +0800 Subject: 精简 Wiki 构建与运行方式 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将浏览器端工具整理为 utilities 插件,移除 Docker、Org GTD 和 files API,并补充单文件构建及 Node.js 运行入口。 --- scripts/build.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 scripts/build.sh (limited to 'scripts/build.sh') diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..ac7651f --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,66 @@ +#!/bin/sh + +set -eu + +SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +PROJECT_DIR=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd) +OUTPUT_DIR="$PROJECT_DIR/dist" +OUTPUT_FILE="$OUTPUT_DIR/tdwiki.html" +TIDDLYWIKI_BIN=${TIDDLYWIKI_BIN:-tiddlywiki} +BUILD_TMP_DIR= +BUILD_WIKI_DIR= + +cleanup() { + if [ -n "$BUILD_TMP_DIR" ] && [ -d "$BUILD_TMP_DIR" ]; then + rm -rf -- "$BUILD_TMP_DIR" + fi +} + +prepare_build_wiki() { + BUILD_TMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/tdwiki-build.XXXXXX") + BUILD_WIKI_DIR="$BUILD_TMP_DIR/wiki" + mkdir -p "$BUILD_WIKI_DIR" + cp -R "$PROJECT_DIR/tiddlers" "$BUILD_WIKI_DIR/tiddlers" + cp -R "$PROJECT_DIR/plugins" "$BUILD_WIKI_DIR/plugins" + + node -e ' +const fs = require("fs"); +const source = process.argv[1]; +const destination = process.argv[2]; +const info = JSON.parse(fs.readFileSync(source,"utf8")); +const serverPlugins = new Set([ + "tiddlywiki/filesystem", + "tiddlywiki/tiddlyweb" +]); +info.plugins = (info.plugins || []).filter(name => !serverPlugins.has(name)); +fs.writeFileSync(destination,JSON.stringify(info,null,4) + "\n"); +' "$PROJECT_DIR/tiddlywiki.info" "$BUILD_WIKI_DIR/tiddlywiki.info" +} + +verify_output() { + node -e ' +const fs = require("fs"); +const filename = process.argv[1]; +const html = fs.readFileSync(filename,"utf8"); + +for(const title of ["$:/plugins/local/utilities"]) { + if(!html.includes(`"title":"${title}"`)) { + throw new Error(`single-file wiki is missing ${title}`); + } +} + +' "$OUTPUT_FILE" +} + +trap cleanup EXIT HUP INT TERM + +prepare_build_wiki +mkdir -p "$OUTPUT_DIR" + +"$TIDDLYWIKI_BIN" "$BUILD_WIKI_DIR" \ + --output "$OUTPUT_DIR" \ + --rendertiddler '$:/core/save/all' \ + tdwiki.html text/plain + +verify_output +printf 'Built %s\n' "$OUTPUT_FILE" -- cgit v1.2.3