跳转到内容

包管理器:不用自己造轮子

完成时间:约 15 分钟。读完后你能理解 npm 和 Go Modules 的核心文件与常用命令。

你不需要自己写每一个功能。别人已经写好了成千上万的现成工具,你只需要”安装”就能用——包管理器就是帮你干这件事的。


类比:手机的 App Store。你不需要自己开发微信、地图、支付宝,打开应用商店搜一下、点安装就行。

编程世界里也一样:

  • 别人写好的功能叫””(package)或””(library)
  • 比如”发送 HTTP 请求”、“处理日期”、“生成 PDF”——这些都有现成的包
  • 包管理器负责:下载、安装、更新、卸载这些包

没有包管理器,你就得自己造轮子——费时、费力、还不一定造得好。


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 — 自定义的快捷命令(下面会讲)
Terminal window
npm install # 按 package.json 安装所有依赖
npm install axios # 安装一个新包
npm uninstall axios # 卸载一个包
npm run dev # 运行 package.json 里定义的 dev 脚本
npm run build # 构建生产版本

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 语言内置的包管理器。你在本课程的后端项目(server/ 目录)里会遇到它。

文件作用类比
go.modGo 项目的依赖清单类似 package.json
go.sum版本校验文件,确保包没被篡改类似 package-lock.json

和 npm 不同的是,Go 没有 node_modules 这样的项目级文件夹——Go 把下载的包缓存在系统级目录里,所有项目共享。

Terminal window
go mod tidy # 整理依赖(添加缺少的,删除多余的)
go get 包名 # 安装新依赖
go build ./... # 编译项目
go run main.go # 直接运行

你可能会在 MCP 配置或教程里看到这样的命令:

Terminal window
npx -y @anthropic/mcp-server

npx 的作用:临时下载并运行一个包,用完就扔,不永久安装到项目里。

类比:外卖——你不用买锅买菜自己做,叫一份外卖吃完就行。如果你天天吃,才值得自己买食材(npm install)。


npm(前端)Go Modules(后端)
依赖清单package.jsongo.mod
锁文件package-lock.jsongo.sum
安装命令npm installgo mod tidy
包存放位置node_modules/(项目内)系统缓存(全局)
运行脚本npm run xxxgo run xxx

问题解决
npm install 报错删除 node_modulespackage-lock.json,重新运行 npm install
go build 报 missing module运行 go mod tidy
node_modules 太大正常现象,不要提交到 Git(.gitignore 里已排除)

无需额外练习——在项目实战中你会自然地使用这些命令。第一次运行 npm installgo mod tidy 时,回来翻翻这篇就够了。


你需要记住的说明
包管理器 = App Store搜索安装别人写好的功能,不用自己造轮子
npm 管前端,Go Modules 管后端两套体系,思路一样
package.json / go.mod项目的依赖清单,最重要的文件
node_modules/ 不提交 Git它很大,而且可以随时重新安装
遇到依赖问题先删再装npm 删 node_modules 重装,Go 跑 go mod tidy