如何激活带有公共依赖的自托管全局Dart包?
解决Dart私有仓库与pub.dev依赖共存问题
你不需要托管所有第三方依赖,问题出在你全局覆盖了PUB_HOSTED_URL,导致pub尝试从私有仓库拉取所有包(包括只在pub.dev存在的glob)。以下是正确的解决方式:
方法一:全局激活时指定私有仓库源
直接在激活命令中明确指定你的私有仓库作为my_package的来源,pub会自动从默认的pub.dev拉取其他依赖:
dart pub global activate --source hosted --hosted-url https://dart.pkg.jetbrains.space/path/to/my/repo my_package
方法二:配置全局pubspec映射(适合频繁使用私有包)
如果你需要经常使用这个私有仓库的包,可以在全局pub配置文件中添加映射,避免每次都输入仓库地址:
- 打开全局pubspec文件(路径为
~/.pub-cache/pubspec.yaml,Windows系统为%APPDATA%\Pub\Cache\pubspec.yaml) - 添加以下内容:
dependencies: my_package: hosted: url: https://dart.pkg.jetbrains.space/path/to/my/repo
- 之后直接运行
dart pub global activate my_package即可,pub会自动从对应仓库拉取my_package,并从pub.dev拉取依赖。
注意事项
- 不要设置全局的
PUB_HOSTED_URL,除非你所有依赖都托管在私有仓库中 - 确保已经正确执行过
dart pub token add https://dart.pkg.jetbrains.space/path/to/my/repo并输入了有效密钥
内容的提问来源于stack exchange,提问作者ncuillery
相关产品推荐
相关产品推荐

