news 2026/9/25 8:31:37

TiddlyWiki5 bin 脚本指南:用 serve / test / lazy 自动化本地服务器与测试流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TiddlyWiki5 bin 脚本指南:用 serve / test / lazy 自动化本地服务器与测试流程
  • 前端
  • 后端

【免费下载链接】TiddlyWiki5

A self-contained JavaScript wiki for the browser, Node.js, AWS Lambda etc.

项目地址:https://gitcode.com/gh_mirrors/ti/TiddlyWiki5
点击查看免费下载

本篇技术指南围绕 TiddlyWiki5 仓库根目录下bin文件夹中的自动化脚本展开,详细介绍serve(HTTP 服务)、test(服务端与浏览器测试)、lazy(图片懒加载服务)三个核心脚本的用法、参数含义与底层调用链。读者阅读后将掌握如何在本仓库中一键启动 tw5.com 服务器、如何运行官方测试套件,以及如何基于这些脚本改造出自己的构建与发布工具。

一、bin目录概览:脚本即文档化的命令行工具

TiddlyWiki5 将日常开发中反复使用的命令行操作封装为一组 shell/batch 脚本,统一存放在 bin 目录 中。这些脚本一方面用于自动化常见任务(如启动服务、跑测试、发布版本),另一方面也是开发者编写自己脚本的起点模板。除本文重点的serve、test、lazy外,目录中还包含clean.sh、verbump.sh、npm-publish.sh、ci-test.sh、ci-push.sh、quick-bld.sh、readme-bld.sh、tankbld.sh、ginsu.sh、optimise-svgs.js、update-translation-from-html-file.sh等构建与发布辅助脚本。

一个贯穿所有脚本的硬性约定是:所有脚本都期望在仓库根目录下运行。因为脚本内部以相对路径(如./tiddlywiki.js、./editions/...)定位入口与配置,脱离根目录执行会直接导致路径解析失败。

二、serve:以 HTTP 服务器方式运行 TiddlyWiki

serve是最常用的脚本,它把 TiddlyWiki5 以 Node.js HTTP 服务器形态启动,默认加载tw5.com-serveredition 的内容。跨平台提供两个等价实现:

  • Unix/Linux/macOS:bin/serve.sh
  • Windows:bin/serve.cmd

2.1 基本用法与参数

./bin/serve.sh -h ./bin/serve.sh [edition dir] [username] [password] [host] [port]

Windows 下对应:

.\bin\serve.cmd -h .\bin\serve.cmd [edition dir] [username] [password] [host] [port]

五个位置参数全部可选,含义如下:

参数含义默认值
edition diredition 目录的完整或相对路径./editions/tw5.com-server
username用于签署编辑的用户名,可为空串""空
password密码,提供后启用 HTTP Basic 认证,可为空串""空
hostIP 地址或主机名localhost
port监听端口8080

常用示例(来自 serve.sh 的帮助文本):

# 指定 edition 与编辑用户名 ./bin/serve.sh ./editions/tw5.com-server username # 显式指定全部参数:空用户名、空密码、localhost、端口 9090 ./bin/serve.sh ./editions/tw5.com-server "" "" localhost 9090

脚本还支持-v(显示版本号)与-h(显示帮助)两个开关。serve.sh的版本号目前为 0.0.2,这在 version() 函数 中定义。

2.2 环境变量TW_SERVE_EDITION_PATH

两个平台的脚本都尊重名为TW_SERVE_EDITION_PATH的环境变量:如果该变量已设置,且未在命令行提供 edition 参数,则优先使用环境变量指定的 edition 目录;命令行参数一旦提供,则覆盖环境变量。这一点在 serve.sh 头部注释 与 参数处理逻辑 中均有体现,serve.cmd也实现了相同规则(见 serve.cmd 的 :main 段)。

# 先设置环境变量,再直接运行脚本 export TW_SERVE_EDITION_PATH="./editions/tw5.com-server" ./bin/serve.sh

脚本同时会对 edition 目录做存在性校验:目录必须存在且包含tiddlywiki.info文件,否则报错退出(见 check_edition_directory())。

2.3 底层命令与调用链

serve脚本最终执行的是一条 Node.js 命令(见 serve() 函数):

node ./tiddlywiki.js \ "$1" \ --verbose \ --server "$5" $:/core/save/all text/plain text/html "$2" "$3" "$4"

这里调用的是仓库根目录的 tiddlywiki.js 入口,它负责引导 Node.js 环境并执行命令行参数。--server是核心命令,其参数序列为端口 根Tiddler 根渲染类型 根服务类型 用户名 密码 主机。从 core-server/commands/server.js 的实现可以看到,这些参数最终被映射为服务器变量:

  • port← 第 1 个参数(端口)
  • root-tiddler←$:/core/save/all
  • root-render-type←text/plain
  • root-serve-type←text/html
  • username/password← 认证信息
  • host← 第 6 个参数

其中$:/core/save/all是"保存全部内容"的渲染模板 Tiddler(定义于 core/templates/save-all.tid),它决定了 HTTP 根路径返回的 HTML 页面内容。

2.4 启动后的行为与实验方式

脚本说明文档给出了明确的使用路径:运行脚本后,在浏览器访问http://127.0.0.1:8080即可体验该配置。浏览器内所做的修改会通过 HTTP 请求传播到服务器(可用浏览器开发者工具观察这些请求),服务器再将变更同步到文件系统,并在终端屏幕上逐条记录每次修改。这一交互闭环得以成立的前提是 edition 的tiddlywiki.info配置中同时启用了两个关键插件——tiddlywiki/tiddlyweb与tiddlywiki/filesystem,脚本头部注释明确指出缺少它们将无法保存(见 serve.sh 注释)。默认的 editions/tw5.com-server/tiddlywiki.info 正是如此配置的:它包含tiddlywiki/tiddlyweb、tiddlywiki/filesystem等插件,并通过includeWikis引入../tw5.com的内容,用default-tiddler-location指向实际 Tiddler 存放目录。

三、test:构建并运行测试套件

test脚本用于在服务器端运行 TiddlyWiki 的测试 edition,完成两类工作:

  1. 在 Node.js 端执行服务端测试;
  2. 构建出test.html,供浏览器端运行同一套测试。

实现见 bin/test.sh:

node ./tiddlywiki.js \ ./editions/test \ --verbose \ --version \ --rendertiddler $:/core/save/all test.html text/plain \ --test \ || exit 1 echo To run the tests in a browser, open "editions/test/output/test.html"

脚本以 editions/test 为启动 edition,依次执行:

  • --version:输出版本信息(便于在测试日志中定位版本);
  • --rendertiddler $:/core/save/all test.html text/plain:把测试 wiki 渲染为test.html;
  • --test:触发服务端测试运行。

--test与--rendertiddler都是 TiddlyWiki 核心命令,其实现位于 core-server/commands 目录。测试完成后,浏览器端测试通过打开editions/test/output/test.html运行。Windows 版 bin/test.cmd 逻辑相同,只是去掉了--version与提示输出。

四、lazy:带图片懒加载的 tw5.com 服务

lazy脚本提供与serve类似的服务能力,区别在于它对图片应用了 LazyLoading(懒加载)机制,适合在开发调试时减轻带宽压力。

./bin/lazy.sh <username> [<password>]

Windows 对应:

.\bin\lazy.cmd <username> [<password>]

从 bin/lazy.sh 的实现看,它固定使用editions/tw5.com-server作为内容源,端口固定为 8080,并将根 Tiddler 换成了$:/core/save/lazy-images:

node ./tiddlywiki.js \ editions/tw5.com-server \ --verbose \ --server 8080 $:/core/save/lazy-images text/plain text/html $1 $2 \ || exit 1

$:/core/save/lazy-images是懒加载专用渲染模板(见 core/templates/save-lazy-images.tid),其渲染结果会把图片资源拆分为按需加载的形式,页面先渲染骨架,图片在滚动到视口附近时才发起请求。与serve.sh相比,lazy.sh只接收用户名与密码两个参数;注意 Windows 版 bin/lazy.cmd 中实际引用的是editions\server(Unix 版为editions/tw5.com-server),两者在路径写法上存在差异,跨平台迁移脚本时需留意。

五、以bin脚本为模板扩展自己的工具

bin目录的定位不仅是开箱即用的工具,更是自定义脚本的起点。参考serve/test/lazy的写法,可以总结出编写 TiddlyWiki5 命令行脚本的三个要点:

  1. 统一从仓库根目录启动:脚本内部一律通过node ./tiddlywiki.js <edition> --参数...调用,保证 edition 路径与输出路径可预测;
  2. 善用环境变量提供默认值:如TW_SERVE_EDITION_PATH允许在不改脚本的前提下切换默认 edition,命令行参数优先于环境变量的设计兼顾了灵活性与幂等性;
  3. 关注 edition 的插件组合:服务端保存能力依赖tiddlywiki/tiddlyweb与tiddlywiki/filesystem插件,创建新 edition 时应在 tiddlywiki.info 中显式声明;而根 Tiddler($:/core/save/all、$:/core/save/lazy-images)的选择直接决定 HTTP 根路径返回的页面形态。

仓库中的 readme.md、package.json 与 core-server/commands 目录提供了完整的命令清单与实现参考,结合 editions 下各 edition 的tiddlywiki.info配置,即可快速搭建符合自己工作流的本地 TiddlyWiki 服务与测试流程。

  • 前端
  • 后端

【免费下载链接】TiddlyWiki5

A self-contained JavaScript wiki for the browser, Node.js, AWS Lambda etc.

项目地址:https://gitcode.com/gh_mirrors/ti/TiddlyWiki5
点击查看免费下载

相关推荐

上一篇:Halo-Theme-Hao主题国际化方案:多语言支持实现与配置
下一篇:PhoneNumberKit性能基准测试:与其他电话号码库的对比分析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 8:31:13

VS Code Todo-Tree ripgrep配置失效原因与跨平台解决方案

1. 为什么Todo-Tree会突然“失明”&#xff1f;——从报错信息反推系统级依赖链你打开VS Code&#xff0c;习惯性扫一眼侧边栏的Todo-Tree面板&#xff0c;却发现它空空如也&#xff0c;右下角弹出一行红色提示&#xff1a;todo-tree: failed to find vscode-ripgrep - please …

作者头像 李华
网站建设 2026/9/25 8:29:12

Atlas 300V实战:把YOLO模型部署到昇腾推理卡的完整指南

群里有人问我&#xff1a;Atlas 300V 24G到底算不算“运算加速卡”&#xff1f;还有人直接说“我想把YOLO部署上去&#xff0c;该怎么搞”。这两个问题其实指向的是同一个话题——昇腾Atlas系列卡到底能干什么&#xff0c;尤其是做目标检测这类推理场景时&#xff0c;它和普通G…

作者头像 李华
网站建设 2026/9/25 8:25:57

Docker部署OnlyOffice中文乱码?一文搞定容器中文字体配置

我先把话放在这儿&#xff1a;如果你在Linux服务器上用Docker部署OnlyOffice&#xff0c;打开中文docx文档看到满屏方块、转PDF中文变“豆腐块”&#xff0c;十有八九不是软件坏了&#xff0c;而是容器里压根没有中文字体。这个坑几乎每个部署OnlyOffice的人都会踩一遍&#xf…

作者头像 李华