첫 번째 npm 패키지를 배포했습니다: `short-id-lite` 🎉
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(
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의 원하는 길이를 지정합니다.