你可能会说:
- “为什么我的项目里有几百个我从没装过的包?”
- “AI 装了一个新库,会不会有问题?”
它是什么
package.json 里列的是直接依赖,但每个依赖又有自己的依赖,层层展开,最后装进 node_modules 的往往是几百个包。任何一个出问题,都可能让你的项目构建失败。
依赖会更新。新版本可能修了 bug,也可能改了行为、提高了对运行环境的要求。所以装依赖时要固定具体版本,升级时要有意为之,而不是某天自动发生。
AI 很爱加依赖:一个小功能就引入一个库。每多一个依赖,就多一份体积、一份安全风险和一份未来升级的负担。能用几行代码解决的,就别装新库。
打个比方
像做菜用的成品调料:一瓶酱油背后有它自己的原料和工厂。你只买了一瓶,其实同时依赖了一整条供应链。
在这个网站里
这个网站在 package.json 里只写了 11 个直接依赖,但锁文件里记着 781 个包。迁移到 Astro 7 时,就是其中一个间接依赖(undici 8)要求 Node 22.19 以上,让线上构建失败了一次(第 10 课)。
容易搞混的地方
常见误解
我只装了十几个包,项目就只依赖这十几个
正确理解
它们各自还有依赖。真正装进来的,是锁文件里记录的那一整棵树。
你可以这样告诉 AI
复制下面这段,贴给你的 AI
这次改动新增了哪些依赖?每个依赖是做什么的、有没有不装它的替代方案(比如几行代码自己实现)?装了之后锁文件有没有一起更新并提交?
接下来去哪
接着看
在这些课里出现