零基础AI编程第9课:为什么项目启动前必须安装依赖?

零基础AI编程第9课:为什么项目启动前必须安装依赖?
这里是写作结构示例,不是固定正文。文章模型会根据转写稿替换。

你是否遇到过这样的场景:从 GitHub 下载完别人的代码,按照说明在终端输入启动命令,结果却报错了?仔细查看说明文档,才发现第一步是“安装依赖”。很多人会疑惑:代码不是都下载好了吗?为什么还要再装一遍东西?

`` 是摘要与正文的分隔标记,请保留。

什么是“依赖”?

简单来说,依赖(Dependencies) 就是一个项目要正常运行,所需要依靠的其他代码包。

以开发一个网页项目为例,你可能需要使用 React 框架。而 React 本身又依赖于其他工具库。这些由他人编写、你的项目所引用的代码,统称为“依赖”。

Definition of Dependencies

为什么 GitHub 上不直接上传依赖?

项目作者在上传代码到 GitHub 时,通常只上传源代码文件,而不会把依赖文件一起上传。主要原因有两点:

  1. 体积庞大:一个项目可能包含几百甚至上千个依赖文件。如果全部上传,仓库体积会非常巨大。
  2. 冗余存储:依赖库通常是通用的,每个开发者本地都可以独立下载,无需重复存储。

因此,作者只会上传一份**“清单”**。这份清单记录了:

  • 项目需要哪些依赖。
  • 每个依赖的具体版本要求。

Why Dependencies Are Not Uploaded

不同语言中的“依赖清单”

虽然作用相同,但不同编程语言中,这份清单文件的名称各不相同:

  • JavaScript/Node.js: package.json
  • Python: requirements.txt
  • Java: pom.xml
  • Go: go.mod

当你执行安装命令时,实际上是在告诉电脑:“请读取这份清单,并将上面列出的所有依赖下载到本地。”

依赖下载到哪里了?

下载下来的依赖会被存放在一个专门的文件夹中。例如,在 Node.js 项目中,这个文件夹通常叫 node_modules

关于这个文件夹,有两点需要注意:

  1. 体积巨大:它的大小经常比你写的源代码大几十倍。
  2. 切勿手动删除或修改:里面全是自动生成的第三方代码,不需要也不应该试图去理解其内部结构。手动删除会导致项目无法运行。

Dependency Storage Location

关键区分:运行时依赖 vs 开发时依赖

依赖主要分为两类,理解这一区别对于项目部署至关重要:

  1. 运行时依赖(Runtime Dependencies)
    • 项目正常运行必须依赖的代码。
    • 例如:React、Vue 等前端框架。
  2. 开发时依赖(Dev Dependencies)
    • 仅在开发阶段使用的工具,线上运行时根本用不到。
    • 例如:代码格式化工具、测试框架、构建工具等。

AI 编程中的常见陷阱: 在使用 AI 辅助编程时,AI 有时会将这两类依赖混淆,导致在线上环境构建失败。因此,当 AI 建议添加一个新依赖时,建议你追问一句:

“这个是运行必须的,还是开发时才用的?”

确保将其放置在配置文件的正确位置(如 dependenciesdevDependencies)。

Runtime vs Dev Dependencies

总结

以后从 GitHub 拉取项目后,请遵循以下原则:

  1. 第一步先装依赖:不要跳过这一步,否则项目极大概率无法启动。
  2. 不要手动干预依赖文件夹:不要手动删除或修改 node_modules 等依赖目录。

一句话总结:装依赖,就是把项目运行所需的所有“零件”,按照清单全部下载到本地。