diff --git a/npm/ng-packs/packages/schematics/src/utils/rule.ts b/npm/ng-packs/packages/schematics/src/utils/rule.ts index 6748f30fab..39b14cec78 100644 --- a/npm/ng-packs/packages/schematics/src/utils/rule.ts +++ b/npm/ng-packs/packages/schematics/src/utils/rule.ts @@ -1,6 +1,8 @@ import { apply, + chain, forEach, + MergeStrategy, mergeWith, Rule, SchematicContext, @@ -16,6 +18,14 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule { }; } +export function chainAndMerge(rules: Rule[]) { + return (host: Tree) => async (tree: Tree, context: SchematicContext) => + host.merge( + (await (chain(rules)(tree, context) as any).toPromise()) as Tree, + MergeStrategy.AllowDeleteConflict, + ); +} + export function overwriteFileIfExists(tree: Tree): Rule { return forEach(fileEntry => { if (!tree.exists(fileEntry.path)) return fileEntry;