pub 依赖项和 dev_dependencies 有啥区别?

Posted

技术标签:

【中文标题】pub 依赖项和 dev_dependencies 有啥区别?【英文标题】:What's the difference between pub dependencies and dev_dependencies?pub 依赖项和 dev_dependencies 有什么区别? 【发布时间】:2015-11-13 12:25:39 【问题描述】:

pubspec.yaml 中的dependenciesdev_dependencies 有什么区别?似乎当我运行pub get 时,dev_dependencies 没有被下载。

【问题讨论】:

【参考方案1】:

dev_dependencies 是对生成的应用程序中的代码不可用的依赖项,而仅适用于测试、示例、工具或将可执行工具(如代码生成)添加到您的项目。

当您发布到 pub.dev 时,您的项目中的任何依赖项(dependenciesdev_dependencies)总是会忽略dev_dependencies

另见https://dart.dev/tools/pub/pubspec

【讨论】:

恕我直言,您的解释不是很清楚。 Here 的解释很好。【参考方案2】:

依赖有两种,一种是常规的,一种是开发的。

依赖关系:

常规依赖项列在依赖项下:-这些是任何使用您的包的人也需要的包。

dev_dependencies:

仅在包本身的开发阶段才需要的依赖项列在 dev_dependencies 下。


如果你的包(比如A)依赖于另一个包(比如B)(它有dev-dependencies),那么你的包A会忽略包Bdev-dependencies

但是,您的包A 取决于包Bdependencies 列出的包。

【讨论】:

我如何决定哪些依赖项将放在dev-dependencies 下,哪些将放在dependency 下。假设我必须包含 image_picker 的依赖项,现在我应该放在哪里以及为什么?【参考方案3】:

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

Dev dependencies 与常规依赖项的不同之处在于,您所依赖的包的开发依赖项将被忽略。 这是一个例子:

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

dev_dependencies:
  test: '>=0.5.0 <0.12.0'

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

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

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

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

【讨论】:

以上是关于pub 依赖项和 dev_dependencies 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中数Json序列化

Flutter中数Json序列化

当我需要使用dev_dependency

Flutter 多语言 插件 intl

依赖项升级后 Android Firebase 依赖项出现颤振问题

更新的依赖项和 Thymeleaf 标签不起作用