角度示意图:如何在规则中创建文件然后更新相同的文件内容

时间:2018-10-09 14:42:45

标签: angular angular-schematics

我试图使用Angular Schematics创建一个带有功能的服务文件。

创建服务文件是可以的。 但是,我无法将虚拟树链接到写入创建服务的下一个规则。

这是代码:

function createService(options: any, name: string): Rule {
  return (tree: Tree) => {

    const templateSource = apply(url('./files'), [
      options.spec ? noop() : filter(path => !path.endsWith('.spec.ts')),
      template({
        ...strings,
        'if-flat': (s: string) => options.flat ? '' : s,
        ...{ name: 'test' },
      }),
      move('myService.ts'),
    ]);

    return mergeWith(templateSource);
  };
}

function addFunction(filePath: string): Rule {
  return (tree: Tree) => {

    const content = tree.read(filePath);
    console.log('content : ', content);
    if (!content) {
      console.log('content is null');
    }

     tree.overwrite(filePath, '/* TEST */' + content);
  };
}

export default function (options: any): Rule {
  return (host: Tree) => {
    return chain([
        createService(options, 'myService'),
        addFunction(options, 'myService')
    ]);
  };
}

content在addFunction函数中始终为null,因此/ * TEST * /永远不会添加到文件中。 我以为createService中的mergeWith会写入虚拟树,并且我可以获取文件并将其写入其中……实际上,filePath存在于虚拟树中,但为空。

我有一种解决方案,可以使用相同的示意图写入以前创建的文件,请告诉我:)

0 个答案:

没有答案