2014-10-02 45 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