我尝试了很多技巧,但对于我的生活,我无法让它发挥作用。这项技术给了我最大的希望,但仍然没有奏效如下:
- 我注意到对“build”方法的调用(在build.dart中)返回一个Future,所以我假设如果我只是简单地实现了Future的.then()方法,那么我可以确保我的代码在整个构建过程完成后执行,并且所有文件都已正确放置在我的web \ out目录结构中。在我的“then”代码中,我对web / out中的所有内容进行了简单的递归复制到我的目标目录。现在,由于abc.html中发生的一些链接更改(作为build()方法的结果),我不得不将web / out目录结构复制到我的终极恶意中的几个不同的位置,但是我现在不关心这个。真正的问题是,当我更改(例如)我的abc.css文件并保存它时,我认为我的build.dart会执行,所有文件更改都会被复制,但是我错了。
2)在我上面的#1冒险中,我想我会尝试做一个“构建清理”,认为这样可以确保我总是将所有最新文件复制到我的最终目的地,但是这也不起作用。
我的主要目标是将我的应用程序快速复制到JBoss中已部署的WAR目录,以便我可以快速测试我的REST调用,而不是依赖在端口3030上运行的调试服务器。
思想?
答案 0 :(得分:1)
首先,了解这里的组件非常重要。 (如果你还不知道的话。)
根目录中的build.dart 映射到编辑器的功能。当它被调用并且传递给它的参数都在编辑的世界里。我已经从这个文件中使用了一些loggin,只是为了看它何时被调用等等。如果你写一个文件来写你的项目之外的文件,或者日志更新将启动另一个构建,那就小心了永远不会结束。
对 build 的调用,它包含在包中:web_ui / component_build是关于WebUi编译器的。它存在于自己的世界中,只是在build.dart传递的参数上。可能值得在build.dart之外自己玩这个代码,只是为了看看它是如何工作的。
https://github.com/dart-lang/web-ui/blob/master/lib/component_build.dart#L35
如果您想要调整build.dart文件的示例,可以查看Widgets。 https://github.com/kevmoo/widget.dart/blob/master/build.dart
我在这里做了很多随机清理工作。不确定它是否会超级有用,但它会给你一些想法。
就复制内容和准备部署而言,我使用 Hop 。这是小部件的hop_runner
https://github.com/kevmoo/widget.dart/blob/master/tool/hop_runner.dart
我将复制步骤分解为自己的任务。这个任务目前只运行一个shell脚本,虽然有些人正在制作一个纯Dart版本。
我们很乐意帮忙。
答案 1 :(得分:1)
回答您的具体问题“如何知道Web UI构建过程何时完成?”问题,尝试这样的事情:
import 'package:web_ui/component_build.dart';
import 'dart:io';
import 'dart:async';
void main() {
var args = new List.from(new Options().arguments);
args.addAll(['--', '--no-rewrite-urls']);
Future dwc = build(args, ['web/clock_page.html', 'web/HelloWorld.html']);
dwc
.then((_) => Process.run('cp', ['packages/browser/dart.js', 'web/out/dart.js']))
.then((_) => Process.run('cp', ['App.css', 'out']));
}
注意build()
函数如何返回Future,并且可以注册在将来完成后运行的函数。