mirror of https://github.com/abpframework/abp.git
19 changed files with 156 additions and 38 deletions
@ -0,0 +1,48 @@ |
|||
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); |
|||
|
|||
const _exports: string[] = []; |
|||
|
|||
dir.subfiles.forEach(fragment => { |
|||
if (!fragment.endsWith('.ts')) return; |
|||
|
|||
_exports.push(`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.push(`export * as ${strings.classify(fragment)} from './${fragment}';`); |
|||
generateBarrelFromPath(tree, subDirPath); |
|||
}); |
|||
|
|||
_exports.sort(); |
|||
|
|||
if (_exports.length) |
|||
saveFile( |
|||
indexPath + '/index.ts', |
|||
_exports.join(` |
|||
`),
|
|||
); |
|||
} |
|||
@ -0,0 +1,8 @@ |
|||
import { Tree } from '@angular-devkit/schematics'; |
|||
|
|||
export function createFileSaver(tree: Tree) { |
|||
return (filePath: string, fileContent: string) => |
|||
tree.exists(filePath) |
|||
? tree.overwrite(filePath, fileContent) |
|||
: tree.create(filePath, fileContent); |
|||
} |
|||
Loading…
Reference in new issue