Browse Source

feat: add barrel export generator utility fn

pull/5246/head
Arman Ozak 6 years ago
parent
commit
07cc4477b5
  1. 43
      npm/ng-packs/packages/schematics/src/utils/barrel.ts
  2. 1
      npm/ng-packs/packages/schematics/src/utils/index.ts

43
npm/ng-packs/packages/schematics/src/utils/barrel.ts

@ -0,0 +1,43 @@
import { strings } from '@angular-devkit/core';
import { Tree } from '@angular-devkit/schematics';
import { PROXY_PATH } from '../constants';
import { createFileSaver } from './file';
export function createProxyIndexGenerator(targetPath: string) {
return createBarrelsGenerator(targetPath + PROXY_PATH);
}
export function createBarrelsGenerator(rootPath: string) {
return (tree: Tree) => {
generateBarrelFromPath(tree, rootPath);
return tree;
};
}
export function generateBarrelFromPath(tree: Tree, indexPath: string) {
const saveFile = createFileSaver(tree);
const dir = tree.getDir(indexPath);
let _exports = '';
dir.subfiles.forEach(fragment => {
if (!fragment.endsWith('.ts')) return;
_exports += `export * from './${fragment.replace(/\.ts$/, '')}';
`;
});
dir.subdirs.forEach(fragment => {
const subDirPath = indexPath + '/' + fragment;
const subDir = tree.getDir(subDirPath);
let hasFiles = false;
subDir.visit(() => (hasFiles = true));
if (!hasFiles) return;
_exports += `export * as ${strings.classify(fragment)} from './${fragment}';
`;
generateBarrelFromPath(tree, subDirPath);
});
if (_exports) saveFile(indexPath + '/index.ts', _exports);
}

1
npm/ng-packs/packages/schematics/src/utils/index.ts

@ -1,6 +1,7 @@
export * from './angular';
export * from './api';
export * from './ast';
export * from './barrel';
export * from './common';
export * from './enum';
export * from './file';

Loading…
Cancel
Save