UNPKG

takin

Version:

Front end engineering base toolchain and scaffold

43 lines 1.61 kB
"use strict"; 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