angular - Şemalar için bir görev nasıl oluşturabilirim?


Angular şematiklerinin bazı görevleri vardır. Script yürütücüsü ile çalışacak kendi görevimi oluşturmak istiyorum. Angular'ın bunu nasıl yaptığına dair bir örnek.

Şu anda sadece şemanın sonuna önceden tanımlanmış görevler oluşturuyorum.

Cevap #1

Bir yürütücü kaydedebildim, ancak özel bir alan kullandığım için desteklenmiyor. Yapmanız gerekenler şunlardır:

const host = <NodeModulesEngineHost>(<any>context.engine)._host; // this line is not supported
host.registerTaskExecutor<YourFactoryOptions>({
  name: "your-executor-name",
  create: (opt) => import('../path/to/executor').then(mod => mod.default(opt))
});

Görev yürütücü kaydının nasıl oluşturulacağını Github'da görebilirsiniz ve ardından daha sonra burada gerçekten kaydedilir.

Cevap #2

Bu yoldan gitmeyi düşündüm, ama şu anda kendi görevlerinizi eklemenin desteklenmediği için, sadece çağırmak istediğim yöntemi saran basit bir şema oluşturmaya ve RunSchematicTask kullanmaya karar verdim. Bu sorunum çözdü ve biraz daha güvenli hissettirdi, ancak şemalar dizininde biraz tekrar/karmaşıklığa yol açtı.

Örnek olarak, işte basit şema:

export function simpleSchematic(options: any): Rule {
  return async () => {
    await someAsyncMethod(options);
  }
}

Ve işte bunu 'ebeveyn' şematikte nasıl çağırdığım:

export function parentSchematic(options: any): Rule {
  return chain([
    someRuleCreator(options),
    (_tree: Tree, context: SchematicContext) => {
      context.addTask(new RunSchematicTask('simple-schematic', {})
    }
  ]);
}

Dikkat edin, collection.json'a simple-schematic girdisini eklemem gerekti, ancak yukarıdaki örnekte bunu sağlamadım.