计算机知识篇

什么是包管理器

站在巨人的肩膀上

写代码时,你不需要从零开始造轮子。全世界的开发者已经写好了无数的工具包(Package),你只需要一行命令就能安装使用。

包管理器就是帮你下载、安装、更新、删除这些工具包的工具。

💡 类比:包管理器就像手机上的应用商店。你不需要自己写一个输入法,直接从商店下载安装就好了。

加载图表中...

npm — JavaScript 的包管理器

npm (Node Package Manager) 是 JavaScript/Node.js 生态中最常用的包管理器。

常用命令

# 初始化一个新项目(创建 package.json)
$ npm init -y

# 安装一个包
$ npm install react
$ npm install next

# 安装开发依赖(只在开发时需要)
$ npm install --save-dev typescript

# 安装 package.json 中列出的所有依赖
$ npm install

# 运行项目脚本
$ npm run dev
$ npm run build

# 卸载一个包
$ npm uninstall react-icons

package.json — 项目的"身份证"

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "next": "^15.0.0",
    "react": "^19.0.0",
    "react-dom": "^19.0.0"
  },
  "devDependencies": {
    "typescript": "^5.0.0"
  }
}
加载图表中...

node_modules — 依赖安装目录

运行 npm install 后,所有的依赖包会被下载到 node_modules 文件夹中。

⚠️ 重要node_modules 文件夹通常非常大(几百MB),绝不应该提交到 Git。在 .gitignore 中添加 node_modules/

package-lock.json

这个文件记录了每个依赖包的精确版本号,确保团队所有人安装的版本完全一致。

pip — Python 的包管理器

pip 是 Python 生态中的包管理器。

# 安装一个包
$ pip install requests
$ pip install flask

# 安装指定版本
$ pip install numpy==1.24.0

# 从 requirements.txt 安装所有依赖
$ pip install -r requirements.txt

# 查看已安装的包
$ pip list

# 导出当前环境的依赖列表
$ pip freeze > requirements.txt

# 卸载
$ pip uninstall requests

requirements.txt — Python 的依赖清单

flask==3.0.0
requests==2.31.0
numpy>=1.24.0
openai==1.3.0

npm vs pip 对照表

功能npm (JavaScript)pip (Python)
安装包npm install axiospip install requests
安装所有依赖npm installpip install -r requirements.txt
卸载包npm uninstall axiospip uninstall requests
依赖配置文件package.jsonrequirements.txt
锁定版本package-lock.json
包的存储位置node_modules/系统Python目录
运行脚本npm run devpython app.py

版本号的含义

包的版本号通常遵循语义化版本(SemVer)规范:

主版本.次版本.补丁版本
  15   .  3  .   0
版本变化含义示例
主版本 (Major)有重大变更,可能不兼容15.0.0 → 16.0.0
次版本 (Minor)新增功能,向下兼容15.0.0 → 15.1.0
补丁版本 (Patch)修复bug15.0.0 → 15.0.1
^15.0.0  → 允许 15.x.x(锁定主版本)
~15.0.0  → 允许 15.0.x(锁定主+次版本)
15.0.0   → 精确锁定这个版本

小结

  • 包管理器帮你安装和管理第三方工具包
  • JavaScript 用 npm,Python 用 pip
  • package.jsonrequirements.txt 记录项目依赖
  • node_modules/ 不要提交到 Git
  • 理解版本号有助于解决兼容性问题