Еще раз спасибо!

у написатьRule это переписывает файл каждый раз. В следующем и естьMergeStrategy установлен вOverwrite:

collection.json

{
  "$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
  "schematics": {
    "function": {
      "aliases": [ "fn" ],
      "factory": "./function",
      "description": "Create a function.",
      "schema": "./function/schema.json"
    }
  }
}

function/index.ts

export default function(options: FunctionOptions): Rule {
  options.path = options.path ? normalize(options.path) : options.path;
  const sourceDir = options.sourceDir;
  if (!sourceDir) {
    throw new SchematicsException(`sourceDir option is required.`);
  }

  const templateSource: Source = apply(
    url('./files'),
    [
      template({
        ...strings,
        ...options,
      }),
      move(sourceDir),
    ]
  )

  return mergeWith(templateSource, MergeStrategy.Overwrite);

}

files/__path__/__name@dasherize__.ts

export function <%= camelize(name) %>(): void {
}

я бегуschematics .:function --name=test --dry-run=false я получил

CREATE /src/app/test.ts (33 байта)

но потом, во второй раз.

ОШИБКА! /src/app/test.ts уже существует.

Не следует ли перезаписать файл test.ts без ошибки?

Редактировать:

Все ответы работают и они великолепны, но, похоже, они обходные пути и не имеют очевидного «правильного» ответа и, возможно, основаны на предпочтениях / мнениях. Так что не уверен, как отметить как ответивший.

Ответы на вопрос(4)

Ваш ответ на вопрос