- 前端
- 后端
【免费下载链接】TiddlyWiki5
A self-contained JavaScript wiki for the browser, Node.js, AWS Lambda etc.
本篇技术指南围绕 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 dir | edition 目录的完整或相对路径 | ./editions/tw5.com-server |
username | 用于签署编辑的用户名,可为空串"" | 空 |
password | 密码,提供后启用 HTTP Basic 认证,可为空串"" | 空 |
host | IP 地址或主机名 | 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/allroot-render-type←text/plainroot-serve-type←text/htmlusername/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,完成两类工作:
- 在 Node.js 端执行服务端测试;
- 构建出
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 命令行脚本的三个要点:
- 统一从仓库根目录启动:脚本内部一律通过
node ./tiddlywiki.js <edition> --参数...调用,保证 edition 路径与输出路径可预测; - 善用环境变量提供默认值:如
TW_SERVE_EDITION_PATH允许在不改脚本的前提下切换默认 edition,命令行参数优先于环境变量的设计兼顾了灵活性与幂等性; - 关注 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.
相关推荐
Unity Test辅助脚本使用指南:自动化测试生成器实战
Unity Test辅助脚本使用指南:自动化测试生成器实战 Unity Test是专为C语言设计的轻量级单元测试框架,特别适合嵌入式开发环境。除了核心的测试断言
测试嵌入式Gumroad 的 AI 驱动测试执行:深入解析 test-confidence 技能与 bin/test-confidence 脚本
Gumroad 的 AI 驱动测试执行:深入解析 test confidence 技能与 bin/test confidence 脚本 导读 本文围绕 Gumr
后端前端电商BabelDOC PDF 翻译实战指南:安装、运行与参数说明
BabelDOC PDF 翻译实战指南:安装、运行与参数说明 你手上有一份 200 页的英文论文,需要一份能逐页对照阅读的中文版。BabelDOC PDF 翻译
人工智能AI 应用NLP计算机视觉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考