【发布时间】:2014-10-10 11:27:52
【问题描述】:
我正在构建使用 Django 作为后端的 Polymer.dart 应用程序。 我想将所有静态文件保存在“/static/”目录中,或者例如使用cdn服务器。 但是“pub build”为脚本和其他资产创建了相对 url。有没有办法在“发布构建”期间为 url 中的发布注入绝对前缀?
统一更新: 所以最简单的解决方案是制作一个变压器:
import 'dart:async';
import 'package:barback/barback.dart';
class UrlTransformer extends Transformer {
UrlTransformer.asPlugin();
String get allowedExtensions => '.html';
Future apply(Transform transform) {
return transform.primaryInput.readAsString().then((contents) {
transform.addOutput(new Asset.fromString(
transform.primaryInput.id,
contents.replaceAllMapped(
new RegExp(r'src="([^\{"]+)"'),
(Match m) => "src=\"/static/${m[1]}\"").replaceAll("href=\"", "href=\"/static/")
)
);
});
}
}
但我不知道如何将 dart2js 转换器的结果放到适当的文件夹中。生成的 JS 文件现在与 *.html 位于同一目录中。
我试图将我的变压器放在 pubspec 中的 $dart2js 之后,但是当 pub build 在变压器初始化步骤时它会引发错误。所以我不能为此制作变压器。
【问题讨论】:
-
您可以为 pub build 创建一个转换器,添加前缀/更改 HTML 或 CSS 文件中的 url。
-
您是指
your_package/static、your_package/web/static还是your_package/lib/static. You can have absolute URLs for assets inlib/...` 您使用src属性引用。导入的处理方式略有不同。 -
我的意思是生产 html 中的资产链接应该是静态的,例如
src="http://eaxmple.com/static/js/my_app.dart.js"或与 Web 根目录相关。
标签: django dart dart-polymer