Skip to content
难度LEVEL
阅读READ约 2 分钟~2 min
更新UPDATED2026-09

第 10 章 依赖 · 站在一亿个陌生人的肩膀上

easycode · Agent Skill
package.json 购物清单 依赖哪些包,各要什么版本 npm install node_modules 按清单搬回家的货 大得离谱是正常的,删了随时能凭清单重装,永远不需要手动去改它 lock 文件把每个包的精确版本钉死,保证人人装到的完全一样 包会过时腐烂,也可能被坏人下毒(供应链攻击)——要紧的是知道自己站在谁的肩膀上 stickmancharles.com · CC BY-NC-ND 4.0
图 10 · 购物清单与搬回家的货

没有人从零写一切。处理日期,发请求,画图表,这些别人早就写好、打磨过千百遍的轮子,叫库(Library)包(Package)。把它们装进你项目的工具,叫包管理器,JavaScript 世界用 npm,Python 世界用 pip,像是代码的应用商店。你装进来的这些东西,统称你的依赖(Dependencies)

打开我们任何一个前端项目,都能看到两样东西。一个是 package.json,项目的购物清单,写着依赖哪些包,各要什么版本。另一个是 node_modules 文件夹,按清单搬回家的货。它大得离谱是正常的,删了随时能凭清单重装(npm install),而且永远不需要手动去改它

版本号 1.2.3 这三段数字有讲究,这套约定叫 semver。第一段变了,可能不兼容旧用法。后两段变,一般是加功能和修 bug。"在我电脑上能跑,在你电脑上崩了"的惨案,很大一部分来自两台电脑装的版本不一致。所以还会有一个 lock 文件(如 package-lock.json),把每个包的精确版本钉死,保证人人装到的完全一样。

依赖也有代价,知道两句话就够。包会过时腐烂,多年没人维护。包也可能被坏人下毒,这叫供应链攻击。所以当 AI 说"我装个包来解决这个问题"时,你现在完全知道它在干什么了,偶尔可以追问一句,这个包多少人在用?最近还在更新吗?

关键领悟

现代开发的默认姿势就是站在别人肩膀上。要紧的是知道自己站在谁的肩膀上,用不着拒绝依赖。

试一试

打开我们项目的 package.json,挑三个没见过的依赖,让 AI 一句话解释各自是干嘛的。

由 Charles Tao 与 Claude 协作写成——这本身就是这套书讲的工作方式。Written by Charles Tao with Claude — which is itself the working method this series teaches. · 许可License