@uiw-admin/plugins
Version:
84 lines • 2.45 kB
JavaScript
/**
* 获取目录下所有的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); //递归,如果是文件夹,就继续遍历该文件夹下面的文件
}
}
});
}
}
}