使用 angular ng-update 示意图迁移重大更改

Migrating breaking change using angular ng-update schematic

无法运行 自定义 ng 更新原理图。目标是遍历 html 文件并搜索某些 dom 属性,但是我不确定如何在 angular 应用程序中正确遍历树结构。我没有在网上找到很多关于这方面的信息,我希望能在这里得到一些结果。下面是我当前尝试访问文件系统的规则工厂。

export default function MigrationUpdate(_options: any): Rule {
  return (host: Tree, _context: SchematicContext) => {
    
    //Traverse file system in angular application
    //Searching for html files 
    host.getDir('/files').visit(filePath => {
      if (!filePath.endsWith('.html')) {
        return;
      }
      const text = host.read(filePath);
      if (text === null) {
        throw new SchematicsException('Unable to read file path.');
      }
    });

    return host;
  };
}

因为我看到其他开发人员也遇到过这个问题,所以在此发布。为了正确访问项目文件结构,getDir() 采用一个字符串参数来表示该项目的文件路径。首先使用从 here 找到的 getWorkSpace() 检索适当的项目。将要传递给 getDir() 的 options.path 设置为 src 目录文件。

export default function (options: any): Rule {
  return (host: Tree, context: SchematicContext) => {
    
    const workspace = getWorkspace(host);
    if(!options.project){
      options.project = Object.keys(workspace.projects)[0];
    }
    const project = workspace.projects[options.project];
    options.path = join(normalize(project.root), 'src');

    host.getDir(options.path).visit(file => {
      if (file.endsWith('component.html')) {
        context.logger.log('info','Successfully found HTML files'); 
      }
    });

    return host;
  };
}