2013-07-14 23 views
3

我有一个web目录,其中包含了一些CSS和JS文件:为什么`pub install`会在`web`的所有子目录中继续创建`packages`链接?

├── bootstrap-wysiwyg 
│   ├── index.html 
│   ├── packages -> ../../packages 
│   └── republish.sh 
├── css 
│   ├── bootstrap-combined.no-icons.min.css 
│   ├── packages -> ../../packages 
│   ├── prettify.css 
│   └── screen.css 
├── images 
│   └── packages -> ../../packages 
├── js 
│   ├── bootstrap.min.js 
│   ├── packages -> ../../packages 
│   ├── prettify.js 
│   └── prettify.js.1 
├── lib 
│   ├── font-awesome-3.2.1 
│ └── packages -> ../../packages 
└── packages -> ../packages 

你可以看到有在web目录的子目录每一个packages链接。我删除了一次,但是当我运行pub install时它会出现。

我不明白为什么pub会为我创建它们,并且有什么方法可以禁用它吗?我不想要它们,因为当我在IDEA Dart插件中运行build命令时,它会报告错误,因为它无法正确处理它们。

+0

另外,将它们放置在“资产”等文件夹中非常烦人,每次部署项目时都需要清理它们。 – DrColossos

+0

是不是只是为了方便参考,所以一切都在'import'包:fluff/fluff.dart'',无论你在哪个目录? – 0xor1

+0

只是一个未经测试的想法,但不能将这些文件夹添加到'.dartignore'? – MarioP

回答

0

当飞镖看到像进口:

import 'package:foo/foo.dart'; 

据其翻译为:

import '<url of your entrypoint>/packages/foo/foo.dart'; 

所以,说你的应用程序的入口点是:

myapp/web/app/main.dart 

如果它有一个“package:”import,像上面那样,它会重新映射到:

import 'myapp/web/app/packages/foo/foo.dart'; 

这意味着,飞镖才能够找到foo.dart,需要有一个packages目录内app包含foo/foo.dart。酒吧的一部分工作就是为你设置。

这绝对不是使用Dart和酒吧最好的部分。在任何地方使用符号链接都很麻烦,但它处理语言对我们的限制。随着时间的推移,我们希望不必创建这些符号链接。

有关此here的更多详细信息。

+0

关于你的答案和问题本身,你忘了解释从不同位置(目录)计算'<你的入口点的URL>的算法? – mezoni

+0

'<您的入口点的url>'是您传递给独立Dart VM的参数,或者是用于加载应用程序的'

相关问题