2013-05-28 47 views
3

我設法添加一個相對路徑依賴我的應用程序是否有可能在pubspec給予不同的名字命名的包依賴

name: myapp 
description: A sample app 
dependencies: 
    mylib: 
    path: ../mylib 

,然後在我的源代碼導入

import 'package:mylib/mylib.dart'; 

然而,'mylib'這個名字取自庫包pubspec,如果我想改變它(例如'mynewlib'),我必須在任何地方更改名稱(pubspec和dart源代碼)

它也是prev ent擁有2個相同名稱的包(是的,我知道,很奇怪,但我不控制pub.dartlang.org中的內容)。我想要做的是一樣的東西

name: myapp 
description: A sample app 
dependencies: 
    mylib: 
    path: ../mylib 
    name: mynewlib 

,並在源代碼

import 'package:mynewlib/mylib.dart'; 

但是我無法找到正確的語法,這是否是可能的,或者不是。 (準備測試的示例代碼在這裏:https://github.com/alextekartik/dart-test/tree/master/lib_test)。需要注意的是,這裏我說的不是庫名,但包的名稱(和命名包MYLIB可能會造成混淆)

回答

2

沒有辦法定義一個包本身的另一個名稱(據我知道 - 如果有,我有興趣太)。

但是,作爲解決方法,您可以重新包裝它。例如,假設您有兩個「mylib」包。

創建一個新庫應用程序「mylib1」。在那裏,您導入第一個「mylib」並使用export將其重新導出。爲另一個「mylib」創建另一個庫應用程序「mylib2」。然後你可以在同一個應用程序中使用不同的軟件包名稱。

是的,這是有點尷尬,但只要有沒有更好的辦法...

+0

感謝您的確認。我創建了功能請求https://code.google.com/p/dart/issues/detail?id=10940 – alextk

0

您可以用進口解決名稱衝突:

import 'package:mylib/mylib.dart' as Foo; 

這將創建一個頂級級別名稱來訪問庫API:

Foo.bar(); 
+1

正如我在我的問題的最後說,我不是在談論庫名,但包的名稱。允許'Xxx'作爲庫名與命名空間類似是非常棒的。但是,如果我有2個具有相同名稱的包,或者如果我想更改包名而不通過所有文件,我找不到解決方案 – alextk

相關問題