通过导入脚本来调用脚本的Dart脚本

时间:2014-10-02 02:45:36

标签: dart

我有这个设置:

├── bin
│   ├── all.dart
│   ├── details
│   │   ├── script1.dart
│   │   └── script2.dart
|   |    .....

all.dart 只需导入 script1.dart script2.dart 并调用 main 。目标是在详细信息下有一堆可以单独运行的脚本。另外,我想要一个单独的 all.dart 脚本,可以一次运行它们。这将使调试单个脚本更简单,但仍允许所有脚本运行。

all.dart

import 'details/script1.dart' as script1;
import 'details/script2.dart' as script2;

main() {
  script1.main();
  script2.main();
}

script1.dart

main() => print('script1 run');

script2.dart

main() => print('script2 run');

所以,这是有效的,我在运行 all.dart 时看到了预期的打印语句,但我有两个问题。

首先,我必须在详细信息下软链接。显然pub不会将包软链接传播到子文件夹。这是预期的还是有解决方法?

其次,在第二个import语句的点上, all.dart 中标记了错误。分析仪错误是:

The imported libraries 'script1.dart' and 'script2.dart' should not have the same name ''

所以我的猜测是因为我正在导入其他脚本,就像它们是库一样,并且因为它们没有顶部的库脚本[12]; 语句,所以它们都具有相同的名称 - 空名?

注意:最初我在 lib 下拥有所有这些,我可以将它们作为指定合适的 - package-root 的脚本运行命令行,即使它们是带有 main 的库。但是然后调试我需要在Dart编辑器中运行,这就是我将它们移动到 bin 的原因。也许编辑器应该允许 lib 下的 main 的库作为脚本运行,因为它们在编辑器之外运行就好了吗?脚本/库之间的实际差异似乎有点不必要(因为其他脚本语言允许文件都是)。

如何清理它?

1 个答案:

答案 0 :(得分:1)

我不确定实际问题是什么。

  • 如果库没有库语句,则使用空字符串作为名称。 只需添加一个具有唯一名称的库语句即可解决此问题。

  • 向子目录添加符号链接可解决子目录中脚本导入的问题。 我是这样做的 在dartbug.com上多次提到符号链接应该完全消失,但我不知道这需要多长时间。

  • 我从来没有试过在lib中放置带有main的脚本文件,但它只是针对包布局约定,我想这就是为什么DartEditor不支持它。

    < / LI>