lodash-es - 零改动瘦身版
定位:官方 ESM 分支,API 与 lodash 完全一致,仅把代码切成 ES Module。
优势:
- 体积直接腰斩:全量 24 kB → 12 kB(Tree-Shaking 后还能再掉 30%)。
- 迁移成本=0,全局替换字符串即可,老单测一行不改。
- 浏览器下限依旧 IE11,老项目放心吃。
怎么用:
npm uninstall lodash @types/lodash
npm i lodash-es
# 原代码
import { debounce } from 'lodash'
# 全局替换后
import { debounce } from 'lodash-es'
打包工具会自动摇掉没用到的函数,“下楼梯式”瘦身,风险极低。
es-toolkit - 无痛超速版
定位:重新实现 + 100% 兼容层,让你“今天卸载 lodash,明天上线新需求”。
优势:
- 提供
es-toolkit/compat子包,函数签名与 lodash 镜像级一致;官方 codemod 脚本 90% 自动替换。 - 性能
×2-3,体积−70%;单测通过率 100%,Twitter 上已有团队24h内全量迁移。 - 原生
TypeScript,零 any,路径推断可到第四层:get(obj, 'a.b.c.d')返回类型就是string | undefined。
怎么用:
npm i es-toolkit
# 一键迁移
npx @es-toolkit/codemod src/
想渐进升级?先上 compat,再把冷门函数逐步换成“原生版”即可。
Radashi - 极致性能版(社区续命版 Radash)
定位:零依赖 + ES2020 全新算法,把“冷启动 50 ms”的 Edge Function 当成第一用户。
优势:
- 性能怪兽:
benchmark普遍 ×3-7,包体积 −75%。 - 类型体验拉满:零 any,错误优先风格,
tryit / parallel / retry一把梭。 - 维护活跃:
Radash官方已归档,Radashi社区 nightly 发版,RFC 公开投票。
怎么用:
npm i radashi
# API 全新,但文档极友好
import { debounce, tryit } from 'radashi'
const [err, data] = await tryit(fetch)('/api/user')
注意:函数名、参数与 lodash 不同,需要一次“重写式”迁移,适合新服务或重构窗口期。
moderndash - 折中稳健版
定位:保留 lodash 函数名,内部用原生 API 重写,删掉历史包袱。
优势:
- 体积
−70%,性能×2-4,浏览器下限仍是 ES2020。 - 函数签名
95%一致,官方 codemod 自动跑单测,适合“想升级又怕改爆”的团队。 - 只留高频
70+函数,冷门能力(如_.iteratee)直接下线,减少“学不动”焦虑。
怎么用:
npm i moderndash
npx @moderndash/codemod src/
迁移后大部分单测绿色,老业务代码几乎零感知。