开源项目分享

Keep building, keep sharing

开源项目分享

我叫陈屿,写了十三年后端和工具。习惯把反复用到的东西做成小项目, 单文件、零依赖、能读能改,然后放出来。 这里放着四个还在维护的项目、一些踩坑之后的笔记,以及我每天在用的那套环境。 内容偏工程,不追热点,写得慢,但写下的都是真在用的东西。

Go · TypeScript · Python CLI / 构建工具 长沙 2013 年至今
01

项目

四个项目都在日常使用中,遇到问题就改,改完顺手发个版本。代码托管在自建的 Gitea 上,许可证统一用 MIT。

Slate static site compiler

把一整个 Markdown 目录编译成静态站点,产出一个二进制加一个输出目录,部署时不需要 Node、不需要容器。支持增量重建,改一篇文章通常 200 毫秒内完成;模板用 Go 的 text/template,语法直白,改样式不用重学一套东西。

Go 1.23增量构建MITv2.4
维护中

Trim cjk typography linter

中文写作的排版检查器。扫描中英文之间的空格、全角半角标点混用、成对标点缺失、数字与单位之间多余空隙这四类问题,按文件给出带行号的差异清单,可以直接喂给编辑器的问题列表。规则用一份 TOML 描述,不想检查的项可以关掉。

Python 3.12CLITOML 规则v1.8
稳定

Kite config validator

散落在多个目录里的 YAML 和 JSON 配置,按一份规则表统一校验:必填字段、类型、枚举值三类,出错时打印文件、行号、字段路径和实际值,而不是一长串解析堆栈。在 CI 里跑一遍,能挡掉大部分因为缩进和拼写导致的部署事故。

Go 1.23YAML / JSONCI 集成v0.9
维护中

ScrollKit reveal on scroll

一个约 1.8 KB 的滚动渐显模块,把 IntersectionObserver 包成一行调用,自带逐条错开的延迟、只播放一次、以及 prefers-reduced-motion 下的自动降级。没有依赖,也不接管布局,塞进任何静态页面都不会打架。

TypeScript1.8 KB无障碍降级v1.2
稳定
02

笔记

03

环境

没有花哨的配置,只是用久了懒得换。列在这里,主要是方便别人对照着看那些工具是怎么搭起来的。

编辑器Neovim 0.10,配置约 600 行 Lua · 偶尔用 VS Code
主力语言Go 1.23,其次 TypeScript 5.6 与 Python 3.12
终端Windows Terminal + PowerShell 7,远端用 zsh
版本控制Git,自建 Gitea 加一个只读镜像
部署一台 2 核 4G 的服务器,Caddy 反代,静态目录直出
备份restic 每周全量,保留最近 30 天快照
常用工具ripgrep、fd、jq、fzf、htop
04

联系

关于项目的使用问题、文档里的错字、或者想一起改某个脚本,写邮件最快。

hello@scbs.site

邮件一般两天内回,工作忙的时候会慢一些。代码相关的问题建议附上版本号和能复现的最小例子, 这样通常一次就能说清;如果你直接提了改动方案,我会看得更仔细。