有没有办法在Dart中增加web-ui构建过程,以便在构建过程完成后将代码复制到其他地方?

时间:2013-05-07 14:07:26

标签: process build copy dart dart-webui

我尝试了很多技巧,但对于我的生活,我无法让它发挥作用。这项技术给了我最大的希望,但仍然没有奏效如下:

- 我注意到对“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上运行的调试服务器。

思想?

2 个答案:

答案 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,并且可以注册在将来完成后运行的函数。