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