如何在资产变更时自动运行变压器

时间:2014-06-14 22:02:43

标签: dart windows-7-x64 watch dart-pub

Barback package说明:

  

资产构建系统。给定一组输入文件和一组   转换(想想编译器,预处理器等),会   自动应用适当的变换并生成输出   文件。 修改输入后,自动运行转换   受影响。运行时异步和并行转换   可以最大限度地提高响应能力。

Docs on assets and transformers say:

  

对于pub serve,变换器在dev服务器启动时运行   每当源资产发生变化时。 pub build命令运行   变形金刚一次然后退出。

So I took this example:

// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:barback/barback.dart';
import 'package:markdown/markdown.dart';

import 'dart:async';

class ConvertMarkdown extends Transformer {

  // A constructor named "asPlugin" is required. It can be empty, but
  // it must be present. It is how pub determines that you want this
  // class to be publicly available as a loadable transformer plugin.
  ConvertMarkdown.asPlugin();

  // Any markdown file with one of the following extensions is
  // converted to HTML.
  String get allowedExtensions => ".md .markdown .mdown";

  Future apply(Transform transform) {
    return transform.primaryInput.readAsString().then((content) {

      // The extension of the output is changed to ".html".
      var id = transform.primaryInput.id.changeExtension(".html");

      String newContent = "<html><body>"
                        + markdownToHtml(content)
                        + "</body></html>";
      transform.addOutput(new Asset.fromString(id, newContent));
    });
  }
}

它按预期与pub build一起运行,但除了打印之外不对pub serve执行任何操作:

  

构建成功完成

每次我更改目录中的任何文件(不仅是适当的资产)。

After reading this我认为Dart在Windows平台上观看文件(不仅是目录)时遇到了一些问题。

1 个答案:

答案 0 :(得分:4)

pub serve确实在每次修改文件后运行变换器。但与pub构建相比,它不会将结果输出到build/文件夹。 pub serve是一个开发服务器,因此您需要通过HTTP向资源请求,例如在浏览器中。

有关详细信息,请参阅pub serve文档