我发布了我的第一个 npm 包:`short-id-lite` 🎉
发布: (2026年1月2日 GMT+8 00:45)
3 min read
原文: Dev.to
Source: Dev.to
一个小巧且安全的 Node.js 短 ID 生成器 — 欢迎反馈
发布你的第一个 npm 包常常让人感到莫名的压力。你会不停地自问:
- “这够实用吗?”
- “我是不是在重复造轮子?”
- “会有人真的使用它吗?”
上周我决定不再过度思考,直接交付一个小而专注、诚实的项目:short-id-lite。
- GitHub 仓库: https://github.com/BasharVI/short-id-lite
- npm 包: https://www.npmjs.com/package/short-id-lite
为什么短 ID 很有用
在几乎所有后端项目中,你最终都会需要短 ID 来处理以下场景:
- 邀请码
- 面向公众的引用
- 临时令牌
- 友好的人类可读标识符
这些 不是 UUID 或数据库 ID——只是简短、随机、URL 安全的字符串。
现有方案及其权衡
| 方案 | 缺点 |
|---|---|
| UUID | 太长,不友好,对许多使用场景来说是大材小用 |
基于 Math.random 的工具 | 编写简单但不安全;存在冲突风险和可预测性问题 |
| 功能完整的库(例如 nanoid) | 很优秀,但往往提供了超出极小使用场景所需的选项、更多的代码面以及更大的审计工作量 |
我的需求
“给我一个短小、安全的 ID。不要配置,也不要让人做决定。”
short-id-lite:设计目标
- 极其小巧 – 只有几行代码。
- 零依赖 – 不依赖外部包。
- 加密安全 – 使用 Node.js 的
crypto.randomBytes。 - 以最稳妥的方式保持平凡 – API 极简,毫无惊喜。
- 易于审计 – 实现直白。
- 多年稳定 – 没有隐藏的可变部分。
这个包 不是 用来取代 nanoid。它旨在用 10 % 的复杂度覆盖 80 % 的使用场景。
特性
- 生成短小、URL 安全的 ID。
- 使用 Node.js 加密模块 (
crypto.randomBytes)。 - 暴露单一函数。
- 没有配置对象。
- 没有可变的全局状态。
- 不支持浏览器(仅限 Node.js)。
- 没有魔法。
安装
npm install short-id-lite
用法
import { shortId } from "short-id-lite";
shortId(); // e.g. "aZ3F9q"
shortId(10); // e.g. "Qm9KfP2aXz"
可选的数字参数指定生成的 ID 长度。