7

当一个新的 Dart 包发布时,如何安装更新的版本?

4

2 回答 2

7

DartEditorpub get会在文件pubspec.yaml更新时自动调用。

您可以手动调用它(例如,当您从 GitHub 签出一个项目而不修改任何文件时)

  • Pub Get通过在文件上使用 DartEditor 中的上下文菜单pubspec.yaml
  • 通过在存储文件的包目录中调用pub get命令行pubspec.yaml

pub get如果不存在,则下载文件中记录的包版本pubspec.lock(在包根目录中)或满足版本约束的最新版本(0.0.1在您的示例中可能是any“最新”) 。/如果该文件尚不存在,则创建该文件并保存刚刚下载的已下载软件包的版本。pubspec.lockpub getpub upgradepubspec.lock

检查更新的软件包并使用下载它们

  • Pub Upgrade文件上 DartEditor 中的上下文菜单pubspec.yaml
  • pub upgrade在存储文件的包目录中的命令行上pubspec.yaml

pub upgrade下载满足您的版本限制的最新版本并将下载的版本存储在文件中pubspec.lock

pub get/pub upgrade更喜欢稳定版本(不包含 a 的版本号-0.0.1或类似1.2.0+1的预发布版本,0.0.2-1或者1.2.1-1如果有任何可用的版本满足您的版本约束。

如果您想要预发布,则必须收紧版本约束,以便只有预发布满足您的约束(例如angular: '>=1.2.1'

pub upgrade可能会显示类似的输出

分析器 0.10.5(提供 9 个更新版本)

这表明有 9 个可用的预发布版本比下载的稳定版本更新。

您的依赖项的版本约束需要满足所有依赖项依赖项的版本约束(例如,如果您添加依赖项observe以及依赖于自身的polymer位置)。polymerobserve

您可以强制pub get/pub upgrade到违反依赖项依赖项的版本,方法是使用 underdependencies_override:而不是dependencies:in的版本约束定义依赖项pubspec.yaml

您还可以添加dev_dependencies(例如unittest),它们仅在您的包中定义时才下载,但当它们仅在您的依赖项之一中定义时被忽略。

你看,即使对于经验丰富的 Dart 开发人员来说,这也是一个高级主题。

于 2014-01-30T06:12:44.333 回答
5

如果您是经验丰富的 Dartisan,这个问题可能看起来微不足道,不值得问,但来自 Java 世界(我和我的学生习惯于手动下载 .jar,然后(有时)必须将它们复制到我们的项目)这是一个很自然的新手问题。这里是上下文:两天前 angular 的 v0.9.5 出来了,所以我记下了在我们本地项目中上传库。

好吧,看来我们只需要一个适当定义的pubspec.yaml文件,剩下的就交给 Dart pub 包管理器了。在 Dart 编辑器中,我猜依赖项会在项目刷新或(重新)构建时更新。在我们的项目中,我们碰巧有一个pubspec.yaml文件,例如:

name: angular_dart_demo
version: 0.0.1
dependencies:
  angular: any

(而不是,比如说,angular: ">=0.9.0 <0.10.0")它允许 Pub 经理去获取最新的angular. 毫不费力。好的。

于 2014-01-30T03:23:27.180 回答