buildExtensions property

  1. @override
Map<String, List<String>> get buildExtensions

Mapping from input file extension to output file extensions.

All input sources matching any key in this map will be passed as a build step to this builder. Only files with the same basename and an extension from the values in this map are expected as outputs.

  • If an empty key exists, all inputs are considered matching.
  • An instance of a builder must always return the same configuration. Typically, a builder will return a const map. Builders may also choose extensions based on BuilderOptions.
  • Most builders will use a single input extension and one or more output extensions.

TODO(davidmorgan): add examples.

Implementation

@override
Map<String, List<String>> get buildExtensions {
  if (p.isRelative(config.outputDirectory)) {
    return Map.fromEntries(
      kGraphQLFileExtensions.map(
        (extension) => MapEntry('{{dir}}/{{file}}.${extension}', [
          p.join(
            '{{dir}}',
            config.outputDirectory,
            '{{file}}.${extension}.dart',
          ),
        ]),
      ),
    );
  }
  return {
    ...Map.fromEntries(
      kGraphQLFileExtensions.map(
        (e) => MapEntry(p.join(_assetsPrefix, '{{file}}.${e}'), [
          p.join(
            p.relative(config.outputDirectory, from: '/'),
            '{{file}}.${e}.dart',
          ),
        ]),
      ),
    ),
  };
}