in packages/build-tools/console-toolkit-plugin-xconsole-fs-route/src/route/getMeta.ts [31:84]
function getRouteMetasImpl(param: RouteParam) {
const { currentDir, name, distDir, cwd, isRoot } = param;
const igonreDirs = IGNORE_DIR;
if (isRoot) {
igonreDirs.push(GLOBAL_DIR);
}
if (!fs.existsSync(currentDir)) {
return [];
}
const fileList = fs.readdirSync(currentDir).filter(
(fileName: string) => !fileName.startsWith('.')
);
debug('fs-route', 'scan file for %s fileList is %j', currentDir, fileList);
// 查找出对应的文件夹
const directories = fileList.filter(
(fileName: string) =>
fs.statSync(resolve(currentDir, fileName)).isDirectory() && igonreDirs.indexOf(fileName) === -1
).reverse();
let pages: RouteMeta[] = [];
// 如果这个文件夹下全部是文件夹
// 那么递归遍历这些子文件夹获取页面信息
pages = flatten(directories.map((fileName: string) => {
const filePath = resolve(currentDir, fileName);
return getRouteMetasImpl({
currentDir: filePath,
name: fileName,
cwd,
distDir
});
}));
const indexExt = resolveExt(resolve(currentDir, 'index'));
const layoutPath = resolveWithExt(resolve(currentDir, '..', LAYOUT));
if (indexExt) {
pages.push(new RouteMeta({
directory: currentDir,
page: name,
cwd,
distDir,
layoutPath,
ext: indexExt
}));
}
// 返回这个文件夹下 所有页面的信息
return pages;
}