2014-10-02 44 views
0

我有这样的设置:是通过导入调用脚本飞镖脚本

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

all.dart只是进口script1.dartscript2.dart,并呼吁他们主要。我们的目标是在的细节下有一堆脚本,可以单独运行。此外,我想要一个单独的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不会将软链接传播到子文件夹。这是预期还是有解决方法?

其次,all.dart在第二个导入语句的位置标记了错误。该分析仪的错误是:

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

所以我的猜测是因为我导入其他脚本,就好像他们是图书馆,因为它们不具备库脚本[12];顶部的声明他们都有相同的名字 - 空的名字?

注:我本来所有这些下的lib,我可以运行这些脚本作为,即使他们与库主命令行上指定一个合适的--package根。但后来调试我需要在Dart Editor中运行,这就是为什么我要将它们移动到bin。也许编辑应该允许lib下的库和作为脚本运行,因为它们在编辑器外运行很好?脚本/库之间的实际差异似乎有点不必要(因为其他脚本语言允许文件都是)。

如何清理?

回答

1

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

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

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

  • 我从来没有试图把脚本文件与lib的主要,但它只是反对包的布局约定,我想这就是为什么DartEditor不支持它。

+0

如何清理警告和没有softlink? 第三点是脚本和lib之间真正区别的问题。为什么有一个关于图书馆的主要问题,但是对于主要(而且通过包装布局约定而不是图书馆)需要顶部的图书馆声明来摆脱警告的脚本没有疑虑? 不确定编辑器如何确定它是否可以运行;但一种解决方案是编辑器检查* main *,如果存在则运行*'dart --package-root'*设置为包的包文件夹。那么没有软链接需要*和*任何东西是主(甚至一个库)也可以作为脚本运行。 – user1338952 2014-10-02 10:53:24

+0

我不知道'lib',但除此之外,您应该可以为脚本创建启动配置并添加自定义参数,如'--package-root'。有点麻烦,因为你需要每个文件的配置。标准化AFAIK需要唯一的库名称。 – 2014-10-02 10:57:09

+1

不,太多了。我将坚持使用脚本(库)的内部命名和现在做softlink,因为它没有分析警告。 – user1338952 2014-10-02 11:05:12