【问题标题】:Is there a way to set `//@dart=2.12` for an entire package/lib/folder?有没有办法为整个包/lib/文件夹设置`//@dart=2.12`?
【发布时间】:2021-03-09 16:43:56
【问题描述】:

在将大型代码库迁移到 nnbd 时,如果我们可以选择整个本地包加入/退出 NNBD,将会很有帮助。例如,我可能想先迁移一些叶节点,例如/lib/helper_widgets/*,然后再迁移到高阶视图。

目前 dart 使用 // @dart=2.12 支持每个文件,如果你的包有很多文件,这会相当乏味。

我希望我可以使用libpart of 来做到这一点,但这只会给我一个编译错误,为每个文件添加一个标题。

[编辑] 一个实用的解决方案是在你的项目上运行类似find . -name "*.dart" | xargs sed -i "1s/^/\/\/ @dart=2.9\n/" 的东西。这会将 2.9 导入到每个文件中。在那个 pt,您可以使用 find/replace 来打开 /lib 代码的整个子目录。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    可以是每个文件,也可以是pubspec.yaml。 pubspec 方法将更改整个包。如果您使用dart migrate,这是它执行的步骤之一。然后一定要dart pub upgrade,因为会有一组不同的依赖项可用。

    【讨论】:

    • 他们不支持这一点太糟糕了,似乎一种方法是以某种方式将 // @ dart=2.9 注入每个文件的第一行,此时我们可以对整个文件进行查找/替换文件夹以打开/关闭它们。原因是当我们为非常大的项目打开 nnbd 时,出现 900 个错误。我们需要从叶节点优先的方式开始,即使对于我们的内部应用程序代码也是如此。
    • 为了清楚起见,这将涉及更改 sdk 约束,例如 sdk: ">=2.9.0 =2.10.0
    • 如果您为个人项目选择退出 NNBD,您将无法从 pub 运行旧的不受支持的库。为什么要限制自己呢?
    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2022-01-01
    • 2019-09-28
    • 2017-06-12
    • 2022-01-06
    • 2023-01-13
    相关资源
    最近更新 更多