dart pub build:排除文件或目录

dart pub build: exclude a file or directory

在使用 dart 的 pub build 构建 Web 应用程序时,我试图排除文件或目录列表。 按照 documentation:

的建议使用它
transformers:
- simple_transformer:
    $exclude: "**/CVS"

无效:

Error on line 10, column 3 of pubspec.yaml: "simple_transformer" is not a dependency.

- simple_transformer:

有没有办法(使用 SDK 1.10.0)?

simple_transformer 是要通知排除文件的转换器的名称。如果你想将它应用到 dart2js,你需要使用名称 $dart2js 而不是 simple_transformer.
有关配置 $dart2js 的更多详细信息,请参阅 https://www.dartlang.org/tools/pub/dart2js-transformer.html

遗憾的是,目前不支持将文件标记为 pub build 已忽略,正如 Günter 已经提到的那样。 .gitignore 功能已被删除,因为它没有记录并且造成的问题比解决的问题多。

但是您可以从构建 output 中排除文件。这意味着文件仍在处理(并且仍然需要时间来处理 =/ )但不存在于输出目录中。这对于一次生成应用程序的可部署副本很有用。

在我们的应用程序中,我们使用一个简单的 ConsumeTransformer 将资产标记为已消耗,这样它们就不会写入输出文件夹:

library consume_transformer;

import 'package:barback/barback.dart';

class ConsumeTransformer extends Transformer implements LazyTransformer {
  final List<RegExp> patterns = <RegExp>[];

  ConsumeTransformer.asPlugin(BarbackSettings settings) {
    if (settings.configuration['patterns'] != null) {
      for (var pattern in settings.configuration['patterns']) {
        patterns.add(new RegExp(pattern));
      }
    }
  }

  bool isPrimary(AssetId inputId) =>
      patterns.any((p) => p.hasMatch(inputId.path));

  void declareOutputs(DeclaringTransform transform) {}

  void apply(Transform transform) => transform.consumePrimary();
}

消费者需要一个正则表达式模式列表作为参数并使用匹配的文件。您需要将转换器作为最后一个转换器添加到 pubspec.yaml 文件中:

transformers:
- ... # Your other transformers
- packagename/consume_transformer:
    patterns: ["\.psd$"]

示例配置忽略所有具有 psd 扩展名的文件,但您可以根据需要添加模式。

我创建了一个包含转换器的pub包,看看here