我正在编写一个提供角度分量的角度包(_shared_angular
)。不过,应生成此组件的.html
文件,因为它将基于其他文件。
我不希望检入.html
文件,并且希望使用默认的构建系统生成该文件。
我曾尝试为其编写一个生成器,但是我很难为包本身生成文件...生成的文件总是放在实际的根包中(包括我的包)。
这是我的build.yaml
的样子:
targets:
$default:
builders:
_shared_angular|iconsBuilder:
generate_for:
- lib/$lib$
builders:
_shared_angular|iconsBuilder:
import: "package:_shared_angular/builders/icons_builder.dart"
builder_factories: ["iconsBuilder"]
build_extensions: {"lib/$lib$": ["package:_shared_angular/lib/components/icon/icon_component.html"]}
build_to: cache
auto_apply: dependents
runs_before:
- angular
这就是我的构建器的样子:
import 'package:build/build.dart';
import 'package:glob/glob.dart';
Builder iconsBuilder(BuilderOptions options) => IconsBuilder();
class IconsBuilder implements Builder {
@override
final buildExtensions = const {
r'lib/$lib$': ['package:_shared_angular/lib/components/icon/icon_component.html']
};
@override
build(BuildStep buildStep) async {
final templateContent = await _getTemplateContent(buildStep.findAssets(Glob('package:_shared_angular/lib/components/icon/src/*.svg'));
await buildStep.writeAsString(
AssetId('_shared_angular', 'lib/components/icon/icon_component.html'), templateContent);
}
}
但这不起作用。
编辑:当我将buildExtensions
替换为r'lib/$lib$': ['lib/components/icon/icon_component.html']
时有效,但是我不明白为什么...
答案 0 :(得分:1)
之所以无法正常工作,是因为auto_apply
应该是none
,但是在目标内部,它应该显示为:enabled: true
,如下所示:
targets:
$default:
builders:
_shared_angular|iconsBuilder:
enabled: true