Я действительно с sh документация была лучше, но решение оказалось комбинацией двух вещей:
Сначала вы можете вызвать внешнюю схему c примерно так:
externalSchematic('@keysight/alloy', 'ng-add', options)
Однако одного этого недостаточно, поскольку он не сможет найти вашу посылку. Вы должны будете установить это сначала. Вот окончательное решение:
export function ngAdd(options: any): Rule {
return (tree: Tree, context: SchematicContext) => {
console.log('Adding Pathwave Core dependencies...\n');
dependencies.forEach(dep => addPackageJsonDependency(tree, dep));
const installTaskId = context.addTask(new NodePackageInstallTask());
// Chain won't work here since we need the externals to be actually installed before we call their schemas
// This ensures the externals are a dependency of the node install, so they exist when their schemas run.
context.addTask(new RunSchematicTask('addExternals', options), [installTaskId]);
};
}
export function addExternals(options: any): Rule {
return (_tree: Tree, _context: SchematicContext) => {
console.log('Running dependency schematics...\n');
return chain([
externalSchematic('@keysight/alloy', 'ng-add', options)
]);
};
}
addExternals
должно быть собственной схемой c в collection.json
:
"addExternals": {
"description": "Calls dependency add schemas",
"private": true,
"factory": "./ng-add/index#addExternals"
}