是否可以为pubspec中的包依赖项指定不同的名称

时间:2013-05-28 11:56:01

标签: dart dart-pub

我设法在我的应用中添加了相对路径依赖

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

然后在我的源代码

中导入它
import 'package:mylib/mylib.dart';

但是,名称'mylib'取自库包pubspec,如果我想更改它(例如'mynewlib'),我必须在任何地方更改名称(pubspec和dart源代码)

它也阻止了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 个答案:

答案 0 :(得分:2)

没有办法为包本身定义另一个名称(据我所知 - 如果有的话,我也会感兴趣)。

但是,作为一种解决方法,您可以重新包装它。例如,假设您有两个“mylib”包。

创建一个新的库应用程序“mylib1”。在那里,您导入第一个“mylib”并使用export重新导出它。为另一个“mylib”创建另一个库应用程序“mylib2”。然后,您可以在同一个应用程序中使用不同的包名称。

是的,它有点尴尬,但只要没有更好的方法......

答案 1 :(得分:0)

您可以使用以下命令解决导入时的名称冲突:

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

这将创建一个顶级名称来访问库API:

Foo.bar();