pub依赖项和dev_dependencies之间有什么区别?

时间:2015-08-20 02:05:43

标签: dart dart-pub

<div class="featurebox"> </div>dependenciesdev_dependencies的区别是什么?似乎当我运行pubspec.yaml时,pub get未下载。

3 个答案:

答案 0 :(得分:3)

dev_dependencies仅在您pub get / pub upgrade直接运行包pubspec.yaml时才会使用。始终忽略dev_dependencies个依赖包(dependenciesdev_dependencies)。因此,dev_dependencies仅与您的包的开发(测试,工具,示例......)相关的任务相关,但与其用作依赖关系时不相关。 另请参阅https://www.dartlang.org/tools/pub/pubspec.html

答案 1 :(得分:1)

如果您的程序包(例如A)依赖于另一个程序包(例如B)(还具有dev-dependencies),则您的程序包(A)只会忽略该程序包(B)使用的dev-dependencies

但是,您的软件包(A)将取决于B软件包的软件包(在dependency下指定)。

答案 2 :(得分:0)

Pub 支持两种类型的依赖项:dependenciesdev dependencies

Dev dependencies 与常规依赖项的不同之处在于,您所依赖的软件包的开发依赖项会被忽略。 示例如下:

假设 transmogrify 包在其测试中使用测试包,并且仅在其测试中使用。如果有人只是想使用 transmogrify——导入它的库——它实际上不需要测试。在这种情况下,它将测试指定为开发依赖项
它的 pubspec 将包含以下内容:

dev_dependencies:
  test: '>=0.5.0 <0.12.0'
<块引用>

Pub 获取您的软件包所依赖的每个软件包,以及所有内容 这些包依赖,传递。它还可以获取您的包裹 dev 依赖,但它忽略任何依赖的 dev 依赖 包。 Pub 仅获取您的包的开发依赖项。所以当你的 package 依赖 transmogrify 它会得到 transmogrify 但不测试。

决定常规依赖项还是开发依赖项的规则很简单:如果依赖项是从 lib 或 bin 目录中的某些内容导入的,则它需要是常规依赖项。如果它只是从测试、示例等导入,它可以而且应该是一个开发依赖项。

使用开发依赖关系使依赖关系图更小。这使得 pub 运行得更快,并且更容易找到一组满足所有约束的包版本。

在这里,您可以了解更多关于dependencies