takin
Version:
Front end engineering base toolchain and scaffold
43 lines • 1.61 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.lookupFile = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const asArray_1 = require("../utils/asArray");
/**
* 查找文件
* @param dirs - 目录地址
* @param files - 文件名
* @param extnames - 后缀名
* @param options - 查找选项
* @returns `undefined` 或 文件路径 或 文件内容
*/
function lookupFile(dirs, files, extnames, options = {}) {
const { pathOnly = false, depth = 1 } = options;
if (depth === 0)
return;
for (const dir of (0, asArray_1.asArray)(dirs)) {
for (const file of files) {
for (const extname of extnames) {
const fullPath = [path_1.default.join(dir, file), extname].join('');
if (fs_extra_1.default.pathExistsSync(fullPath) && fs_extra_1.default.statSync(fullPath).isFile()) {
return pathOnly ? fullPath : fs_extra_1.default.readFileSync(fullPath, 'utf-8');
}
}
}
const parentDir = path_1.default.dirname(dir);
if (parentDir !== dir) {
const res = lookupFile(parentDir, files, extnames, {
pathOnly,
depth: depth - 1
});
if (res != null)
return res;
}
}
}
exports.lookupFile = lookupFile;
//# sourceMappingURL=lookupFile.js.map