preinstall 不在 install 前执行?npm 花了五年才想明白
今天刷 GitHub 的时候,发现一个老朋友终于被关掉了。
https://github.com/npm/cli/issues/2660
这个 Issue 是 2021 年 2 月创建的,讨论的是一个很离谱的问题:
preinstall 这个 Hook,居然不是在 install 之前执行的。
按名字理解,preinstall 不应该是先执行吗?
结果 npm 7 开始,它变成了依赖安装完成后才执行。
我第一次知道这个 Issue 是在 2022 年做项目的时候。
当时项目里刚好踩到了这个坑。
查了半天,最后一路顺藤摸瓜找到了这个 Issue。
点进去一看,好家伙,已经有人在 2021 年提出来了,而且还被打上了 Bug、Priority 1、High Priority 等标签。
看到这里,我心想:
既然都已经确认是 Bug 了,那应该快修了吧?
于是顺手在评论区留了一句:
Why not fix this bug instead?
https://github.com/npm/cli/issues/2660#issuecomment-1336976732
然后继续干活去了。
后来几年里,我偶尔会想起这个问题,然后点进去看看。
结果每次看到的都是:
Open.
还是 Open.
依然 Open.
时间久了甚至开始怀疑:
这不会要变成 npm 的历史遗留问题了吧?
结果前几天再打开的时候,发现它终于被修了。
PR:
https://github.com/npm/cli/pull/9267
Issue 关闭:
https://github.com/npm/cli/issues/2660#issuecomment-3710031919
我回头看了一眼时间线:
- 2021 年,Issue 创建
- 2022 年,我踩坑并留言吐槽
- 2026 年,PR 合并,Issue 关闭
整整五年。
这件事其实挺有意思的。
很多人对开源社区有一种天然滤镜,总觉得:
代码都开源了,发现问题、提个 Issue,很快就会有人修。
但现实往往不是这样。
尤其是大型基础设施项目。
哪怕是 npm 这种每天被无数开发者使用的项目,一个已经被确认的 Bug,也可能在 Issue 里躺上好几年。
不是因为没人知道。
而是因为没人有时间。
没人有精力。
或者没人愿意承担改动之后带来的兼容性风险。
Comments (0)
Loading session...