You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
82 lines
2.2 KiB
// @ts-nocheck
|
|
|
|
const path = require("path")
|
|
const fs = require("fs")
|
|
|
|
export function removeIndex(ss:any) {
|
|
const remove = (str:any) => {
|
|
if (str.endsWith("/index")) {
|
|
return str.slice(0, -6);
|
|
}
|
|
if (str.endsWith("index")) {
|
|
return str.slice(0, -5);
|
|
}
|
|
return str ? str : "/";
|
|
};
|
|
let r = true;
|
|
let rr = ss;
|
|
while (r) {
|
|
if (rr.endsWith("/index")) {
|
|
rr = remove(rr);
|
|
} else {
|
|
r = false;
|
|
}
|
|
}
|
|
return rr ? rr : "/";
|
|
}
|
|
|
|
export function isIndexEnd(str:any) {
|
|
return str.length == 1 && str.endsWith("/");
|
|
}
|
|
|
|
|
|
export function walkDir(
|
|
filePath:any,
|
|
exclude = ["node_modules", "^_", ".git", ".idea", ".gitignore", "client","\.txt$","\.test\.js$","\.test\.ts$"]
|
|
) {
|
|
let files:any[] = [];
|
|
function Data(opts:any) {
|
|
this.relativeDir = opts.relativeDir;
|
|
this.relativeFile = opts.relativeFile;
|
|
this.filename = opts.filename;
|
|
this.file = opts.file;
|
|
this.absoluteFile = opts.absoluteFile;
|
|
this.relativeFileNoExt = opts.relativeFileNoExt;
|
|
this.absoluteDir = opts.absoluteDir;
|
|
}
|
|
function readDir(filePath, dirname = ".") {
|
|
let res = fs.readdirSync(filePath);
|
|
res.forEach((filename) => {
|
|
const filepath = path.resolve(filePath, filename);
|
|
const stat = fs.statSync(filepath);
|
|
const name = filepath.split(path.sep).slice(-1)[0];
|
|
if (typeof exclude === "string" && new RegExp(exclude).test(name)) {
|
|
return;
|
|
}
|
|
if (Array.isArray(exclude)) {
|
|
for (let i = 0; i < exclude.length; i++) {
|
|
const excludeItem = exclude[i];
|
|
if (new RegExp(excludeItem).test(name)) {
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (!stat.isFile()) {
|
|
readDir(filepath, dirname + path.sep + name);
|
|
} else {
|
|
const data = new Data({
|
|
relativeDir: dirname,
|
|
relativeFile: dirname + path.sep + path.parse(filepath).base,
|
|
relativeFileNoExt: dirname + path.sep + path.parse(filepath).name,
|
|
file: path.parse(filepath).base,
|
|
filename: path.parse(filepath).name,
|
|
absoluteFile: filepath,
|
|
absoluteDir: path.parse(filepath).dir,
|
|
});
|
|
files.push(data);
|
|
}
|
|
});
|
|
}
|
|
readDir(filePath);
|
|
return files;
|
|
}
|
|
|