UNPKG

@uiw-admin/plugins

Version:
84 lines 2.45 kB
/** * 获取目录下所有的model文件 * */ import fs from 'fs'; import path from 'path'; import { IsModel } from '.'; export var getFilenameInfo = (filedir, root) => { var fileName = path.basename(filedir).replace(/\.(ts|js)$/, ''); var pathUrls = ("" + filedir).replace(/\\/g, '/'); var location = pathUrls.replace(/\/models.*$/, ''); var srcPath = pathUrls.replace(new RegExp(root), '.'); return { fileName, location, srcPath, pathUrls }; }; export class RematchFiles { constructor(root) { this.modelList = []; this.root = ''; this.root = root; this.loopInit(root); } // 递归文件 loopInit(filePath, isModel) { if (isModel === void 0) { isModel = false; } var files = fs.readdirSync(filePath); if (files) { files.forEach(filename => { var mode = isModel; var filedir = path.join(filePath, filename); var isNoEmty = fs.existsSync(filedir); if (!isNoEmty) { return; } var stats = fs.statSync(filedir); if (stats) { var isFile = stats.isFile(); //是文件 var isDir = stats.isDirectory(); //是文件夹 if (isFile && isModel && /\.(ts||js)$/.test(filename)) { var data = fs.readFileSync(filedir, { encoding: 'utf-8' }); var { isModels, modelNames, isCreateModel } = IsModel(data); var { pathUrls, location, srcPath, fileName } = getFilenameInfo(filedir, this.root); // const pathUrls = `${filedir}`.replace(/\\/g, '/'); // const location = pathUrls.replace(/\/models.*$/, ''); // const srcPath = pathUrls.replace(new RegExp(this.root), '.'); if (isModels) { this.modelList.push({ path: pathUrls, filename: fileName, modelName: modelNames, isCreateModel, location, name: modelNames || fileName, srcPath }); } } if (filename === 'models') { mode = true; } if (isDir) { this.loopInit(filedir, mode); //递归,如果是文件夹,就继续遍历该文件夹下面的文件 } } }); } } }