node项目

Long-form notes

node项目

一个人写 Node.js 的地方。运行时、依赖、构建链路,以及那些调试到凌晨三点的时刻。 写下来,是因为同样的坑我大概会踩第二次。

自 2013 年起 Node.js TypeScript 工具链 持续更新

01 About

关于

node项目 这个名字来自 2013 年秋天:一台散热风扇已经不太听话的旧笔记本, 装完 Node.js 之后跑通了一句 console.log。那一刻的错觉是,整个 Web 突然都变得可以亲手改一改了。 这个站点就是从那句话之后慢慢长出来的。

这些年做过的活儿比较杂——小团队的接口服务、电商后台的订单对账脚本、给设计同事写的批量图片处理工具, 还有几个一直没上线的玩具项目。真正留下来的东西不多,习惯只剩一个:把排查过程原样记下来, 包括那些走错的路。

这里没有账号,没有订阅,也不打算做成一门生意。写出来的东西对你有用最好, 没用的话,它至少是我自己的备份。

02 Focus

最近在琢磨的三件事

A

运行时与性能

事件循环的实际调度、堆快照的读法、worker_threads 真正划算的边界。 把某个接口的 p99 从 400ms 压到 90ms 的那次排查,比任何基准测试都更有说服力。

B

依赖与供应链

锁文件、幽灵依赖、安装期脚本。生态的便利是真实的,它带来的信任成本同样真实, 这笔账值得每个人按自己的项目算一遍。

C

命令行与构建链路

尽量让一条命令跑完格式检查、类型检查、打包和冒烟测试。工具换来换去, 最后追求的还是启动快、报错清楚、能塞进流水线。

03 Notes

记录

按时间倒序。多数是排查笔记,少数是当时没想明白、后来又回头补上的问题。

  • 把 monorepo 的冷启动从 47 秒降到 6 秒

    增量类型检查、构建缓存和依赖提升之间的一次取舍,以及为什么最后放弃了全量并行。

  • 一次内存泄漏的完整复盘

    三次堆快照对比之后,问题落在一个用对象当缓存键的闭包里。修复只改了两行。

  • 我给命令行工具加上了 --json

    让工具的输出可以被另一段脚本直接消费,比排得整整齐齐的表格实用得多。

  • 关于锁文件的一次争论

    提交锁文件解决了哪些问题,又悄悄制造了哪些新的不确定性,以及团队里怎么把它说清楚。

04 Setup

手头这套

日常主力是一台装了 Linux 的旧台式机。 编辑器用 Neovim,终端里跑的东西尽量少而稳;能写脚本解决的重复劳动, 不会攒到第三次才动手。

Node.js 22 pnpm TypeScript esbuild Vitest Docker systemd SQLite Git Neovim
05 Reach

联系方向

这里没有留言板,也没有账号系统,邮件是最直接的入口:

hi@guziyi.site
  • 回复节奏 一般两三天内,忙的时候会晚一些。
  • 能帮上忙的 带上版本号、报错原文和一段最小复现,基本能给出方向。
  • 写不动的时候 如果问题本身我也没遇到过,会直说,不会硬凑一个答案。