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
中的dependencies
和dev_dependencies
有什么区别?似乎当我运行pub get
时,dev_dependencies
没有被下载。
【问题讨论】:
【参考方案1】:dev_dependencies
是对生成的应用程序中的代码不可用的依赖项,而仅适用于测试、示例、工具或将可执行工具(如代码生成)添加到您的项目。
当您发布到 pub.dev 时,您的项目中的任何依赖项(dependencies
或 dev_dependencies
)总是会忽略dev_dependencies
。
另见https://dart.dev/tools/pub/pubspec
【讨论】:
恕我直言,您的解释不是很清楚。 Here 的解释很好。【参考方案2】:依赖有两种,一种是常规的,一种是开发的。
依赖关系:
常规依赖项列在依赖项下:-这些是任何使用您的包的人也需要的包。
dev_dependencies:
仅在包本身的开发阶段才需要的依赖项列在 dev_dependencies 下。
如果你的包(比如A
)依赖于另一个包(比如B
)(它有dev-dependencies
),那么你的包A
会忽略包B
的dev-dependencies
。
但是,您的包A
取决于包B
的dependencies
列出的包。
【讨论】:
我如何决定哪些依赖项将放在dev-dependencies
下,哪些将放在dependency
下。假设我必须包含 image_picker
的依赖项,现在我应该放在哪里以及为什么?【参考方案3】:
Pub 支持两种类型的依赖关系:dependencies 和 dev 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 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章