假设在我的 flutter 应用程序中我依赖于一个非常庞大的包。
*** pubspec.yaml ***
dependencies:
some_package: ^0.15.0
Run Code Online (Sandbox Code Playgroud)
但从那个包中我只需要某个文件。
*** main.dart ***
import 'package:some_package/some_file.dart';
Run Code Online (Sandbox Code Playgroud)
编译后,我的应用程序的大小会受到依赖包整体大小的影响吗?或者只是我选择导入的文件?
根据该工具的dart.devdart2js文档:
\n\n提示:不要担心应用程序\xe2\x80\x99s 包含的库的大小。dart2js 工具执行树摇动以省略未使用的类、函数、方法等。只需导入您需要的库,然后让 dart2js 删除您不需要的\xe2\x80\x99t 的库。
\n
因此,通过Tree Shaking,死代码将从最终包中消除,但仅限于某些构建模式。根据Flutter 构建模式说明页面,在调试构建模式下,不会执行树摇动。其他构建模式(发布和配置文件)将执行树摇动。
\n因此,在您的情况下,如果您声明一个包并仅使用其中一个类,则它应该仅增加生成的应用程序大小中导入的类。请注意,有时一个文件依赖于多个其他文件。
\n您可以在这个 github 问题中阅读更多相关信息。
\n