当一个新的 Dart 包发布时,如何安装更新的版本?
2 回答
DartEditorpub get
会在文件pubspec.yaml
更新时自动调用。
您可以手动调用它(例如,当您从 GitHub 签出一个项目而不修改任何文件时)
Pub Get
通过在文件上使用 DartEditor 中的上下文菜单pubspec.yaml
- 通过在存储文件的包目录中调用
pub get
命令行pubspec.yaml
。
pub get
如果不存在,则下载文件中记录的包版本pubspec.lock
(在包根目录中)或满足版本约束的最新版本(0.0.1
在您的示例中可能是any
“最新”) 。/如果该文件尚不存在,则创建该文件并保存刚刚下载的已下载软件包的版本。pubspec.lock
pub get
pub upgrade
pubspec.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
位置)。polymer
observe
您可以强制pub get
/pub upgrade
到违反依赖项依赖项的版本,方法是使用 underdependencies_override:
而不是dependencies:
in的版本约束定义依赖项pubspec.yaml
。
您还可以添加dev_dependencies
(例如unittest
),它们仅在您的包中定义时才下载,但当它们仅在您的依赖项之一中定义时被忽略。
你看,即使对于经验丰富的 Dart 开发人员来说,这也是一个高级主题。
如果您是经验丰富的 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
. 毫不费力。好的。