dart 可以在我的pubspec. yaml中引用另一个pubspec. yaml吗?

p1iqtdky  于 2024-01-03  发布在  其他
关注(0)|答案(2)|浏览(109)

我可以让我的pubspec.yaml使用另一个类似于依赖项的基础吗
用在我的包裹里
所以pubspec.yaml可以引用另一个作为它的基础?

pieyvz9o

pieyvz9o1#

如果你想让这些包使用相同的依赖项,那么也许你可以创建一个新的包,它存储所有需要的包,然后创建一个库。你创建一个新的dart文件,并粘贴如下内容:

library my_library
export 'package:ffmpeg_kit_flutter/ffmpeg_kit.dart';

字符串
然后,对于需要所有这些包的每个项目,只需添加这个新包并导入库文件即可。
如果你想在这个新的导出包中添加一个新的依赖项,你可以添加它,然后导出它。如果你发布了这个导出包到pub.dev,你可能需要在每个使用这个包的项目的pubspec.yaml中更新版本,只需更改版本号并运行pub get,但是,与手动添加依赖项相比,这将不那么麻烦。
希望这能回答你的问题。

6vl6ewon

6vl6ewon2#

当你添加一个依赖项(我们称之为“Package A”)到你的项目中时,它就变成了一个直接依赖项,而“Package A”的任何依赖项都变成了 transitive 依赖项。
至于这两种依赖关系是如何处理的,我不知道它们有什么不同,但它们有特定的命名方式。🤷‍
有一个lint也不鼓励这种类型的行为,depend_on_referenced_packages
显式地依赖于您引用的包 * 确保它们始终存在 *.
这意味着依赖可能在未来的某个时候不存在。可能是一些操作系统维护者删除了他们在项目中不再使用的软件包。
现在,如果你是上述软件包的维护者,我相信你会知道是否有一个依赖已经被删除,所以这可能不是一个问题。
最终,这取决于你,只要知道显式地依赖于你在项目中使用的包是更好的做法。
如果你想实现一个“基本pubspec.yaml”,这里是你可以做的:

  • 你需要创建基本项目
.
  ├── base_pkg
  │   ├── lib
  │   │   └── base_pkg.dart
  │   └── pubspec.yaml
  └── working_project
      ├── ...
      └── pubspec.yaml
  • 将依赖项添加到pubspec.yaml
# (base_pkg) pubspec.yaml
name: base_pkg

dependencies:
   json_annotation: ...
  • 从项目的src文件导出依赖项
// lib/base_pkg.dart

export 'package:json_annotation/json_annotation.dart';
  • 将基本项目添加到工作项目(通过路径)
# (project) pubspec.yaml

dependencies:
   base_pkg:
     path: ../base_pkg # absolute/relative path to base_pkg
  • 在项目
import 'package:base_pkg/base_pkg.dart';

@JsonSerializable()
class SomeClass {
    ...
}

中使用base_pkg的依赖项
**注意:**此方法仅适用于dependencies,不适用于dev_dependencies。所有dev_dependencies仅在导入它们的项目中使用,因此您需要将它们重新添加到工作项目中。

开发依赖与常规依赖的不同之处在于,* 您所依赖的软件包的开发依赖会被忽略 *。

相关问题