Файл schema
в примере является файлом машинописного текста, созданным с помощью этой функции во время процесса сборки в angular-cli
.Это шаблон, используемый в angular-cli
, и пример не будет работать как есть.Вы можете увидеть полный пример источника для такой схемы в одной из официальных угловых схем, таких как service .
Однако имейте в виду, ClassOptions
- это просто объект, который определяет параметры для угловой схемы.Он может прийти откуда угодно и отделен от библиотеки схем. несет ответственность инструмент за предоставление опций для библиотеки схем.
Вот аналогичный пример, использующий справочную таблицу cli .
Создание простой схемы:
schematics blank --name=test
Добавление пути к файлу схемы в collection.json
:
{
"$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
"schematics": {
"test": {
"description": "A blank schematic.",
"factory": "./test/index#test",
"schema": "./test/schema.json"
}
}
}
Создание schema.json
:
{
"$schema": "http://json-schema.org/schema",
"id": "MySchema",
"title": "My Schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"default": "cactus"
}
}
}
Завод в index.ts
теперь получает параметры по умолчанию из файла schema.json
.
import { Rule, SchematicContext, Tree } from "@angular-devkit/schematics";
// You don't have to export the function as default. You can also have more than one rule factory
// per file.
export function test(_options: any): Rule {
return (tree: Tree, _context: SchematicContext) => {
tree.create(_options.name || "hello", "world");
return tree;
};
}
Запускает cli со значениями по умолчанию из schema.json
:
schematics .:test --dry-run=false
...
CREATE /cactus (5 bytes)
запустите cli с пользовательскими параметрами:
schematics .:test --name=bean--dry-run=false
...
CREATE /bean (5 bytes)