跳转至

包管理

在不同层级可以使用不同的包管理工具,例如:

  • Scoop:管“工具安装”(Python、Git、Node、Pandoc…)——偏系统层面
  • venv:管“某个项目的 Python 依赖”——偏项目层面
  • conda:更像“连底层二进制库也一起管”的大环境(数据科学常用)

Python 包管理

pip

pip 本身是一个 Python 包,同时它又可以安装和管理 Python 包。它由Python编写,受限于 Python 解释器的速度。

uv

uv 是一个由 Astral(Ruff 的开发团队)用 Rust 编写的 Python 包管理和项目管理工具。它的特点是快到离谱的速度。它是一个编译好的二进制可执行文件(Binary),不依赖 Python。它把散乱的 Python 工具链(pip, poetry, pyenv, venv)统一成一个极速的工具。

  • 它可以替代 pip(安装包)。
  • 它可以替代 pip-tools(锁定依赖)。
  • 它可以替代 virtualenv / venv(创建虚拟环境)。
  • 它可以替代 pyenv(管理 Python 版本)。
  • 它可以替代 Poetry / PDM(项目全流程管理)。

可以使用scoop install uv安装uv。

JavaScript/TypeScript 包管理

Bun

Bun 是一个为现代 JavaScript 开发设计的一体化运行时(Runtime)和工具箱,是用 Zig 语言编写的,以性能著称。它让你不再需要为了一个简单的 JS 项目配置复杂的 webpack/babel/jest 全家桶。

  • 运行时 (Runtime): 它可以替代 Node.js。你可以直接用 bun run index.js 运行代码。
  • 包管理器 (Package Manager): 它可以替代 npm / yarn / pnpmbun install 速度极快。
  • 打包工具 (Bundler): 它可以替代 Webpack / Vite / Rollup
  • 测试运行器 (Test Runner): 它可以替代 Jest / Vitest

  • 主要特点:

    • 内置 TypeScript 支持: 你不需要安装 ts-node 或配置构建步骤,直接运行 .ts 文件,Bun 原生支持。
    • 启动速度极快: 相比 Node.js,它的启动时间几乎可以忽略不计,非常适合 Serverless 环境。
    • 兼容 Node.js API: 它尽力兼容 Node.js 的模块(fs, path, http 等),大多数现有的 npm 包都能直接用。

Node 版本管理

npm

npm 是 Node.js 自带的包管理器,主要用于安装和管理 JavaScript 包。它也可以用来管理 Node.js 版本,但功能较为有限。

可以通过以下命令查看 npm 的全局安装目录:

npm root -g

查看全局可执行文件的安装路径:

npm bin -g

验证npm包的安装位置

使用 which 查找可执行文件,例如:

which pm2

查看软链接指向的实际文件,例如:

ls -l $(which pm2)

直接查找 pm2 包目录:

npm list -g pm2

find /usr -name "pm2" -type d 2>/dev/null | grep node_modules

nvm

nvm(Node Version Manager) 是一个用于管理多个 Node.js 版本的工具。它允许在同一台机器上安装和切换不同版本的 Node.js,非常适合需要在不同项目中使用不同 Node.js 版本的开发者。

检查是否使用 nvm

which node

如果输出是 /home/用户名/.nvm/versions/node/.../bin/node,说明使用了 nvm。