Pub 基本命令 #

命令概览 #

Pub 提供了一系列命令来管理 Dart/Flutter 项目的依赖和运行脚本:

命令 描述 使用频率
dart pub get 获取依赖 ⭐⭐⭐⭐⭐
dart pub add 添加依赖 ⭐⭐⭐⭐⭐
dart pub remove 移除依赖 ⭐⭐⭐⭐
dart pub upgrade 升级依赖 ⭐⭐⭐⭐
dart pub outdated 检查过时依赖 ⭐⭐⭐
dart pub deps 查看依赖树 ⭐⭐⭐
dart pub run 运行脚本 ⭐⭐⭐⭐
dart pub publish 发布包 ⭐⭐
dart pub cache 管理缓存 ⭐⭐

dart pub get - 获取依赖 #

基本用法 #

bash
# 获取 pubspec.yaml 中声明的所有依赖
dart pub get

# Flutter 项目
flutter pub get

工作原理 #

text
┌─────────────────────────────────────────────────────────────┐
│                     dart pub get 流程                        │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. 读取 pubspec.yaml                                        │
│     │                                                        │
│     ▼                                                        │
│  2. 解析依赖约束                                              │
│     │                                                        │
│     ▼                                                        │
│  3. 检查 pubspec.lock                                        │
│     │                                                        │
│     ├── 存在且兼容 ──► 使用锁定版本                           │
│     │                                                        │
│     └── 不存在或不兼容 ──► 解析新版本                         │
│          │                                                   │
│          ▼                                                   │
│  4. 下载依赖到缓存                                            │
│     │                                                        │
│     ▼                                                        │
│  5. 创建 .dart_tool/package_config.json                      │
│     │                                                        │
│     ▼                                                        │
│  6. 更新 pubspec.lock                                        │
│                                                              │
└─────────────────────────────────────────────────────────────┘

常用选项 #

bash
# 离线模式(仅使用缓存)
dart pub get --offline

# 详细输出
dart pub get --verbose

# 指定目录
dart pub get --directory=/path/to/project

# 紧凑输出(适合 CI)
dart pub get --no-example

输出解读 #

bash
$ dart pub get
Resolving dependencies... 
+ http 1.1.0
+ path 1.8.3
+ test 1.24.0
Changed 3 dependencies!
  • + 表示新增的依赖
  • - 表示移除的依赖
  • ~ 表示版本变更的依赖

dart pub add - 添加依赖 #

基本用法 #

bash
# 添加生产依赖
dart pub add http

# 添加开发依赖
dart pub add --dev test

# Flutter 项目
flutter pub add provider
flutter pub add --dev build_runner

指定版本 #

bash
# 指定精确版本
dart pub add http@1.1.0

# 指定版本范围
dart pub add 'http:^1.0.0'

# 使用 any(不推荐)
dart pub add 'http:any'

添加 Git 依赖 #

bash
# 从 Git 仓库添加
dart pub add --git-url=https://github.com/dart-lang/http.git

# 指定分支
dart pub add --git-url=https://github.com/dart-lang/http.git --git-ref=main

# 指定路径
dart pub add --git-url=https://github.com/user/repo.git --git-path=packages/my_package

添加本地依赖 #

bash
# 添加本地路径依赖
dart pub add --path=../my_package

添加私有仓库依赖 #

bash
# 添加私有仓库依赖
dart pub add my_package --hosted-url=https://my-private-repo.com

自动执行 pub get #

bash
# 添加后自动获取依赖(默认行为)
dart pub add http

# 添加后不自动获取
dart pub add http --no-get

dart pub remove - 移除依赖 #

基本用法 #

bash
# 移除依赖
dart pub remove http

# 移除开发依赖
dart pub remove --dev test

# Flutter 项目
flutter pub remove provider

移除多个依赖 #

bash
# 同时移除多个依赖
dart pub remove http path

选项 #

bash
# 移除后自动获取依赖(默认行为)
dart pub remove http

# 移除后不自动获取
dart pub remove http --no-get

# 离线模式
dart pub remove http --offline

dart pub upgrade - 升级依赖 #

基本用法 #

bash
# 升级所有依赖到最新兼容版本
dart pub upgrade

# Flutter 项目
flutter pub upgrade

升级特定包 #

bash
# 升级特定依赖
dart pub upgrade http

# 升级多个依赖
dart pub upgrade http path test

强制升级 #

bash
# 升级到最新版本(忽略 pubspec.yaml 中的约束)
dart pub upgrade --major-versions

# 仅升级主要版本
dart pub upgrade --major-versions http

常用选项 #

bash
# 离线模式
dart pub upgrade --offline

# 详细输出
dart pub upgrade --verbose

# 紧凑输出
dart pub upgrade --no-example

# 显示输出差异
dart pub upgrade --mode=unlock

升级流程 #

text
升级前:
dependencies:
  http: ^1.0.0    # 实际安装 1.0.0

执行 dart pub upgrade --major-versions:

升级后:
dependencies:
  http: ^1.1.0    # 实际安装 1.1.0

dart pub outdated - 检查过时依赖 #

基本用法 #

bash
# 检查所有过时的依赖
dart pub outdated

# Flutter 项目
flutter pub outdated

输出格式 #

bash
$ dart pub outdated
Dependencies              Current  Upgradable  Resolvable  Latest

direct dependencies:
http                      1.0.0    1.1.0      1.2.0      1.2.0
path                      1.8.0    1.8.3      1.9.0      1.9.0

dev_dependencies:
test                      1.24.0   1.24.0     1.24.0     1.25.0

transitive dependencies:
meta                      1.9.0    1.9.0      1.10.0     1.10.0

列解释 #

描述
Current 当前安装的版本
Upgradable 在当前约束下可升级到的版本
Resolvable 修改约束后可解析到的版本
Latest pub.dev 上的最新版本

输出格式选项 #

bash
# JSON 格式
dart pub outdated --json

# Markdown 格式
dart pub outdated --markdown

# 彩色输出
dart pub outdated --color

# 无颜色输出
dart pub outdated --no-color

检查特定依赖 #

bash
# 检查特定依赖
dart pub outdated http

# 检查多个依赖
dart pub outdated http path

过滤选项 #

bash
# 仅显示直接依赖
dart pub outdated --mode=null-safety

# 显示所有依赖
dart pub outdated --transitive

# 仅显示开发依赖
dart pub outdated --dev-dependencies

dart pub deps - 查看依赖树 #

基本用法 #

bash
# 查看依赖树
dart pub deps

# Flutter 项目
flutter pub deps

输出示例 #

bash
$ dart pub deps
Dart SDK 3.2.0
my_project 1.0.0

dependencies:
- http 1.1.0
  - http_parser 4.0.2
  - meta 1.9.0
  - path 1.8.3
- path 1.8.3

dev_dependencies:
- test 1.24.0
  - analyzer 5.13.0
  - meta 1.9.0

输出格式选项 #

bash
# 树形结构(默认)
dart pub deps --style=tree

# 紧凑列表
dart pub deps --style=compact

# 列表格式
dart pub deps --style=list

过滤选项 #

bash
# 仅显示直接依赖
dart pub deps --no-dev

# 仅显示生产依赖
dart pub deps --dev

# 包含可执行文件
dart pub deps --executables

查找依赖来源 #

bash
# 查看特定依赖的来源
dart pub deps --json | jq '.packages[] | select(.name == "http")'

dart run - 运行脚本 #

基本用法 #

bash
# 运行项目默认入口
dart run

# 运行特定文件
dart run bin/main.dart

# 运行包中的可执行文件
dart run my_package:executable

运行 pubspec.yaml 中定义的脚本 #

yaml
# pubspec.yaml
executables:
  my_app: main
  my_tool: tool
bash
# 运行定义的可执行文件
dart run my_app
dart run my_tool

传递参数 #

bash
# 传递参数给脚本
dart run bin/main.dart --verbose --output=result.txt

# 传递参数给可执行文件
dart run my_app --help

运行测试 #

bash
# 运行所有测试
dart test

# 运行特定测试文件
dart test test/my_test.dart

# 运行 Flutter 测试
flutter test

开发模式运行 #

bash
# 启用断言
dart run --enable-asserts bin/main.dart

# 启用调试
dart run --observe bin/main.dart

dart pub cache - 缓存管理 #

查看缓存 #

bash
# 查看缓存目录
dart pub cache dir

# 输出: /Users/username/.pub-cache

清理缓存 #

bash
# 清理所有缓存
dart pub cache clean

# 清理特定包的缓存
dart pub cache clean http

# 清理多个包
dart pub cache clean http path test

修复缓存 #

bash
# 重新安装所有缓存的包
dart pub cache repair

选项 #

bash
# 详细输出
dart pub cache clean --verbose

# 强制清理
dart pub cache clean --force

dart pub global - 全局包管理 #

激活全局包 #

bash
# 激活包
dart pub global activate webdev

# 激活特定版本
dart pub global activate webdev 2.7.4

# 从 Git 激活
dart pub global activate --source git https://github.com/user/repo.git

# 从本地路径激活
dart pub global activate --source path ./my_package

列出全局包 #

bash
# 列出所有已激活的全局包
dart pub global list

运行全局包 #

bash
# 直接运行(如果 PATH 配置正确)
webdev serve

# 通过 pub run 运行
dart pub global run webdev serve

停用全局包 #

bash
# 停用全局包
dart pub global deactivate webdev

dart pub publish - 发布包 #

发布前检查 #

bash
# 干运行(检查但不发布)
dart pub publish --dry-run

发布包 #

bash
# 发布到 pub.dev
dart pub publish

# 发布到私有仓库
dart pub publish --server=https://my-private-repo.com

强制发布 #

bash
# 跳过确认
dart pub publish --force

常见发布问题 #

bash
# 问题:包名已存在
# 解决:更改包名或联系原包作者

# 问题:版本号未更新
# 解决:更新 pubspec.yaml 中的版本号

# 问题:缺少必要文件
# 解决:确保包含 README.md、CHANGELOG.md、LICENSE

dart pub downloader - 下载器管理 #

查看下载器状态 #

bash
# 查看当前下载器
dart pub downloader

切换下载器 #

bash
# 使用 curl 下载器
dart pub downloader curl

# 使用内置下载器
dart pub downloader builtin

其他实用命令 #

dart pub version #

bash
# 查看 Pub 版本
dart pub --version

dart pub help #

bash
# 查看帮助
dart pub help

# 查看特定命令帮助
dart pub help get
dart pub help add

dart pub token #

bash
# 添加认证令牌
dart pub token add https://my-private-repo.com

# 列出令牌
dart pub token list

# 删除令牌
dart pub token remove https://my-private-repo.com

命令速查表 #

日常使用 #

bash
# 获取/更新依赖
dart pub get

# 添加依赖
dart pub add http
dart pub add --dev test

# 移除依赖
dart pub remove http

# 运行项目
dart run

维护检查 #

bash
# 检查过时依赖
dart pub outdated

# 升级依赖
dart pub upgrade

# 查看依赖树
dart pub deps

故障排除 #

bash
# 清理缓存
dart pub cache clean

# 重新获取依赖
rm -rf .dart_tool pubspec.lock
dart pub get

发布包 #

bash
# 检查发布
dart pub publish --dry-run

# 正式发布
dart pub publish

最佳实践 #

1. 始终使用 pub get 而非手动编辑 #

bash
# ✅ 推荐
dart pub add http

# ❌ 不推荐
# 手动编辑 pubspec.yaml 后忘记运行 dart pub get

2. 定期检查过时依赖 #

bash
# 每周或每月运行
dart pub outdated

3. 谨慎升级主要版本 #

bash
# 先检查变更
dart pub outdated

# 再升级
dart pub upgrade --major-versions

4. 提交 pubspec.lock #

对于应用项目,始终将 pubspec.lock 提交到版本控制:

bash
git add pubspec.lock
git commit -m "Update dependencies"

5. 使用离线模式加速 #

bash
# 在 CI 环境中先缓存依赖
dart pub get

# 后续使用离线模式
dart pub get --offline

下一步 #

现在你已经掌握了 Pub 的基本命令,接下来学习 pubspec.yaml 详解 深入了解项目配置!

最后更新:2026-03-28