built_value
生成.g.dart
代码,但是文档没有给出任何提示,我们是否应该将它们添加到我们的 git 存储库中。
我认为我们应该这样做,因此克隆我们的 repo 的开发人员可以启动并运行,而无需重新生成代码......但是有些人说生成的代码不应该被提交,那么,有什么建议built_value
呢?
built_value
生成.g.dart
代码,但是文档没有给出任何提示,我们是否应该将它们添加到我们的 git 存储库中。
我认为我们应该这样做,因此克隆我们的 repo 的开发人员可以启动并运行,而无需重新生成代码......但是有些人说生成的代码不应该被提交,那么,有什么建议built_value
呢?
如果您正在构建一个希望被其他包和应用程序重用的库包,那么您应该提交它。
代码生成无法生成依赖项中的代码,pub publish
忽略.gitignore
d文件。您将发布无效的包。在这种情况下,git-dependencies 也不起作用。
有些包只在应用程序项目中生成代码,也用于从依赖项导入的代码,就像这样reflectable
做一样。在这种情况下,您不需要提交生成的代码。
即使在应用程序项目中,我也总是提交此类生成的代码。这些文件具有特定的扩展名.g.dart
,可以从代码审查中排除,以免引起噪音或类似情况。
TLDR:
如果您将生成的文件添加到您的 git 提交中,然后遇到任何问题,您需要做的就是build_runner
使用标志运行--delete-conflicting-outputs
flutter packages pub run build_runner build --delete-conflicting-outputs
将生成的文件添加到 Git 提交的问题以及如何处理
提到的关于不将生成的文件添加到您的 git 提交的build_runner
文档点不是一个好点。后来我说为什么。
添加生成文件的重点不是每次执行拉取请求时都必须运行 build_runner 并且不必处理不将它们添加到 git 提交的问题。
但是如果你决定将生成的代码添加到你的 git 提交中会发生什么?以及如何轻松解决它们。
第一个问题是您可能会在生成的文件中遇到合并冲突。现在你怎么处理这个。你没有。此时,您只需解决源文件中的冲突(如果有),然后运行 build_runner,生成的文件将再次生成。
另一个问题是builder_runner
docs中提到的。那是当你运行 build_runner 时,它会给你这个错误
C:\workspace\flutter\projects> flutter pub run build_runner build
[INFO] Generating build script...
[INFO] Generating build script completed, took 336ms
[WARNING] Deleted previous snapshot due to missing asset graph.
[INFO] Creating build script snapshot......
[INFO] Creating build script snapshot... completed, took 12.5s
[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 787ms
[INFO] Checking for unexpected pre-existing outputs....
[INFO] Found 13 declared outputs which already exist on disk. This is likely because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository.
[SEVERE] Conflicting outputs were detected and the build is unable to prompt for permission to remove them. These outputs must be removed manually or the build can be run with `--delete-conflicting-outputs`. The outputs are: lib/models/advisory-service-item.g.dart
--delete-conflicting-outputs
您可以在运行 build_runner 时轻松解决购买添加标志的问题。就像我们已经做过很多次一样
flutter packages pub run build_runner build --delete-conflicting-outputs