【问题标题】:Run lib build of lib from a project with pub从带有 pub 的项目中运行 lib 的 lib 构建
【发布时间】:2019-01-26 23:07:33
【问题描述】:

我实际上参与了多个可以共享代码的飞镖项目。 (基于this exemple

这个通用代码使用了一个名为json_serializable的库

我正在使用它为我的用户模型生成 json 序列化和反序列化方法。 我可以使用命令pub run build_runner build 开始构建。这样我就可以从user_model.dart生成user_model.g.dart(其中包含生成的序列化和反序列化方法)

回到我的项目,我将我的共享代码添加为依赖项。

我想使用我的user_model.dart,但有一个错误提示user_model.g.dart 不存在。事实上,我还没有启动构建来生成这个文件。

我正在尝试找到一种方法来启动我的库所需的这一代代码,但这必须从我的项目中完成。

我想我需要在我的库中添加一个构建文件,但我找不到如何去做:/

架构: Project X --using--> Lib共享代码 --using--> json_serialization

【问题讨论】:

  • 你需要在使用json_serializable的项目中运行pub run build_runner build而不是在使用json_serializable的共享项目中运行。
  • @GünterZöchbauer 这可能是一个解决方案,但我没有在 git 存储库上提交生成的文件。也许我必须......但我正在考虑从项目中构建它们......这是做图书馆的错误方式吗?每次发布库时都必须生成文件吗? ??????
  • “我没有在 git 存储库中提交生成的文件。”那不飞。只要承诺并做好。 build_runner 不会仅在运行它的项目中生成依赖项中的代码。

标签: dart flutter angular-dart dart-pub


【解决方案1】:

您需要提交生成的代码。

build_runner 只能在其运行所在的项目中生成代码,不能在依赖项中生成代码。

【讨论】:

  • 所以当人们使用像json_serializable 这样的lib 来创建一个库时,他们主要将生成的代码添加到git 存储库中? 🤔似乎是最佳做法?
  • 是的。这只是为了自动编写样板代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2015-10-31
  • 1970-01-01
相关资源
最近更新 更多