包管理器:不用自己造轮子
完成时间:约 15 分钟。读完后你能理解 npm 和 Go Modules 的核心文件与常用命令。
你不需要自己写每一个功能。别人已经写好了成千上万的现成工具,你只需要”安装”就能用——包管理器就是帮你干这件事的。
什么是包管理器
Section titled “什么是包管理器”类比:手机的 App Store。你不需要自己开发微信、地图、支付宝,打开应用商店搜一下、点安装就行。
编程世界里也一样:
- 别人写好的功能叫”包”(package)或”库”(library)
- 比如”发送 HTTP 请求”、“处理日期”、“生成 PDF”——这些都有现成的包
- 包管理器负责:下载、安装、更新、卸载这些包
没有包管理器,你就得自己造轮子——费时、费力、还不一定造得好。
本课程涉及的包管理器
Section titled “本课程涉及的包管理器”npm(前端 / Node.js)
Section titled “npm(前端 / Node.js)”npm 是 JavaScript 世界里最主流的包管理器。你在本课程的前端项目(web/ 目录)里会频繁遇到它。
| 文件 | 作用 | 类比 |
|---|---|---|
package.json | 项目的”购物清单”,列出需要哪些包 | 菜谱里的材料清单 |
package-lock.json | 精确版本锁定,确保团队用同一版本 | 菜谱里写死”用 500g 面粉”而不是”适量面粉” |
node_modules/ | 下载下来的包的实际文件 | 你买回来的食材堆在厨房里 |
注意:
node_modules/非常大(几百 MB 很正常),不提交到 Git(.gitignore里已排除)。package-lock.json不要手动修改。
package.json 长这样(简化版):
{ "name": "my-app", "scripts": { "dev": "vite", "build": "vite build" }, "dependencies": { "react": "^19.0.0", "axios": "^1.7.0" }}dependencies— 项目运行需要的包(购物清单的正文)scripts— 自定义的快捷命令(下面会讲)
npm install # 按 package.json 安装所有依赖npm install axios # 安装一个新包npm uninstall axios # 卸载一个包npm run dev # 运行 package.json 里定义的 dev 脚本npm run build # 构建生产版本package.json 里的 scripts 字段
Section titled “package.json 里的 scripts 字段”scripts 就是自定义的快捷命令。你在 package.json 里定义一次,之后用 npm run 名字 来运行。
"scripts": { "dev": "vite", // npm run dev → 启动开发服务器 "build": "vite build", // npm run build → 构建生产版本 "preview": "vite preview" // npm run preview → 预览构建结果}类比:你把常做的菜写成编号——“1 号套餐 = 番茄炒蛋 + 米饭”。以后说”来个 1 号”就行,不用每次都报全名。
Go Modules(后端 / Go)
Section titled “Go Modules(后端 / Go)”Go Modules 是 Go 语言内置的包管理器。你在本课程的后端项目(server/ 目录)里会遇到它。
| 文件 | 作用 | 类比 |
|---|---|---|
go.mod | Go 项目的依赖清单 | 类似 package.json |
go.sum | 版本校验文件,确保包没被篡改 | 类似 package-lock.json |
和 npm 不同的是,Go 没有 node_modules 这样的项目级文件夹——Go 把下载的包缓存在系统级目录里,所有项目共享。
go mod tidy # 整理依赖(添加缺少的,删除多余的)go get 包名 # 安装新依赖go build ./... # 编译项目go run main.go # 直接运行npx — 不安装直接运行
Section titled “npx — 不安装直接运行”你可能会在 MCP 配置或教程里看到这样的命令:
npx -y @anthropic/mcp-servernpx 的作用:临时下载并运行一个包,用完就扔,不永久安装到项目里。
类比:外卖——你不用买锅买菜自己做,叫一份外卖吃完就行。如果你天天吃,才值得自己买食材(npm install)。
| npm(前端) | Go Modules(后端) | |
|---|---|---|
| 依赖清单 | package.json | go.mod |
| 锁文件 | package-lock.json | go.sum |
| 安装命令 | npm install | go mod tidy |
| 包存放位置 | node_modules/(项目内) | 系统缓存(全局) |
| 运行脚本 | npm run xxx | go run xxx |
| 问题 | 解决 |
|---|---|
npm install 报错 | 删除 node_modules 和 package-lock.json,重新运行 npm install |
go build 报 missing module | 运行 go mod tidy |
node_modules 太大 | 正常现象,不要提交到 Git(.gitignore 里已排除) |
无需额外练习——在项目实战中你会自然地使用这些命令。第一次运行 npm install 或 go mod tidy 时,回来翻翻这篇就够了。
| 你需要记住的 | 说明 |
|---|---|
| 包管理器 = App Store | 搜索安装别人写好的功能,不用自己造轮子 |
| npm 管前端,Go Modules 管后端 | 两套体系,思路一样 |
package.json / go.mod | 项目的依赖清单,最重要的文件 |
node_modules/ 不提交 Git | 它很大,而且可以随时重新安装 |
| 遇到依赖问题先删再装 | npm 删 node_modules 重装,Go 跑 go mod tidy |