目录

dart run 命令支持运行文件、当前 package 或者当前 package 的依赖中运行Dart程序。该命令提供了以前在 pub run 和 Dart VM 工具里提供的功能。如果想从任意位置运行程序,可以使用 pub global 命令。

dart run [options] [<DART_FILE> | <PACKAGE_TARGET>] [args]

下面的例子演示了如何创建并且运行一个 Dart 程序:

$ dart create myapp
$ cd myapp
$ dart run

运行 Dart 文件

可以通过传入 Dart 文件的相对路径来运行一个 Dart 程序:

$ dart run tool/debug.dart

运行 package 中的 Dart 程序

本节说明的前提是你在 package 的根目录执行 dart run 命令。更多关于 package 目录结构的介绍,请查阅 package 结构约定

运行依赖 package 中的 Dart 程序

你可以运行当前 package 所依赖的任何 package 的 Dart 程序,只要它在 bin 目录下。运行时请指定依赖的 package 名和程序名。如果程序名与 package 名相同,则可以省略。

例如,在 package 的根目录,想运行一个名为 bar 的依赖 package 中的 main 程序(bin/bar.dart),使用如下命令:

$ dart run bar

如果程序名和 package 名不同,则需要使用 <package 名>:<程序名> 的形式来运行程序。比如 bin/baz.dart 程序在名为 bar 的 package 中, 我们就可以这样运行:

$ dart run bar:baz

放在 bin 目录下的 Dart 文件是可以被 Dart 命令行工具直接访问的,依赖 package 中的其他目录都是私有的。

在当前 package 中运行 Dart 程序

当当前的路径与 package 名匹配时(即文件夹名称与 pubspec 中的 name 属性相同),可以省略 package 名。如果程序名与 package 名匹配(也就是它是 main 程序),也可以省略程序名。

dart run 是运行 Dart 程序最短的形式,它会运行当前 package 的主程序。例如,如果你在名为 foo 的 package 根目录执行下面命令,实际上会运行 bin/foo.dart 文件:

$ dart run

如果程序名和 package 名不同,需要使用 :<程序名> 的形式来运行程序,比如运行当前 package 中的 bin/baz.dart 文件:

$ dart run :baz

要运行在当前 package 但不在 bin 目录的程序时,通过传递相对路径运行(如前文所示):

$ dart run tool/debug.dart

给 main() 传递参数

若你需要 main() 函数传递参数,在命令行后面添加参数即可:

$ dart run tool/debug.dart arg1 arg2

在当前 package 中运行 main 程序需要添加 package 名,比如要传递参数并运行位于 foo package 根目录中的 bin/foo.dart 程序:

$ dart run foo arg1 arg2

调试

若要启用调试功能,将下面的调试选项加入到 dart run 命令中:

运行 dart run --help 获取更多信息。

开启实验性功能

如果在开发中想尝试实验性功能,可以使用 实验性功能开关