pubspec.yaml
文件中dependencies
和dev_dependencies
有什么区别?看起来当我运行pub get
时,dev_dependencies
没有被下载。
dev_dependencies
是一种依赖项,它们不可用于生成应用程序的代码,而只能用于测试、示例、工具或添加可执行工具(例如用于代码生成)到您的项目中。
当您发布到 pub.dev 时,项目中任何依赖项(dependencies
或 dev_dependencies
)的 dev_dependencies
都将被忽略。
依赖有两种类型,一种是常规依赖,另一种是开发依赖。
依赖关系:
常规依赖列在dependencies下-这些是任何使用你的包的人也需要的包。
dev_dependencies:
仅在包本身的开发阶段需要的依赖包列在dev_dependencies下。
如果你的包(比如A)依赖于另一个包(比如B)(它具有dev_dependencies),那么你的包A将忽略包B的dev_dependencies。但是,你的包A依赖于包B的dependencies中列出的包。
dev-dependencies
下,哪个放置在dependency
下。假设我必须包含image_picker
的依赖项,现在应该放在哪里,为什么? - M.ArslanKhanPub支持两种依赖关系:dependencies和dev dependencies。
Dev dependencies与常规依赖关系不同,因为忽略了您所依赖的软件包的开发依赖关系。 以下是一个例子:
假设transmogrify软件包在其测试中使用test软件包,并且仅在其测试中使用。如果有人只想使用transmogrify-导入其库-它实际上不需要test。在这种情况下,它将test指定为开发依赖项。.
它的pubspec将类似于:
dev_dependencies:
test: '>=0.5.0 <0.12.0'
Pub会获取您的包所依赖的每个软件包,以及这些软件包所依赖的一切,递归地。它还会获取您的包的开发依赖项,但会忽略任何依赖包的开发依赖项。Pub仅获取您的包的开发依赖项。因此,当您的包依赖于transmogrify时,它将获取transmogrify但不获取test。
决定使用常规依赖项还是开发依赖项的规则很简单:如果依赖项是从lib或bin目录中的某个内容导入的,则需要是常规依赖项。如果它只是从测试、示例等导入,则可以且应该是开发依赖项。
使用开发依赖项可以使依赖关系图更小。这使得pub运行更快,并使找到满足所有约束条件的软件包版本组合更容易。
在这里,您可以了解更多关于依赖关系的信息。