left-pad 事件解析:11 行 JavaScript 如何搞垮了 npm
来源:dev.to — 2026-09-29
📋 概述
left-pad 事件是每个 JavaScript 开发者都听说过、却很少读过原始材料的 npm 事故。2016 年 3 月 22 日,一位开发者从 npm 撤下了 273 个包,其中之一是十一行的函数 left-pad,随后 Babel、Atom 以及「成千上万个项目」的构建开始失败,用 npm 自己的话说达到「每分钟数百次失败」;修复花了两小时半,还动用了史无前例的备份恢复。而它背后的机制——从任何人都能删除的公共仓库实时解析传递依赖——至今仍是我们大多数人构建软件的方式。
🔑 核心要点
- 导火索是一场命名纠纷:与聊天应用 Kik 争夺 npm 包名 kik 失败后,作者 Azer Koçulu 撤下了自己全部 273 个包。
- left-pad 在前一个月被下载约 248.6 万次,绝大多数不是人类选择它,而是机器安装的东西又依赖了它。
- 直接受害路径是 Babel 与 Atom 通过一个把版本精确固定到 0.0.3 的 line-numbers 包引用了它。
- npm 次日复盘承认「不受限的撤包造成了大量痛苦」「我们搞砸了」,一周后推出 24 小时撤包窗口,后来放宽到 72 小时。
💡 金句
提交你的 lockfile,把那十一行当成一段你自己写的文字。
👍 0
👎 0
← 返回 dev.to 首页