UNPKG

@mypaas/hcm-cli

Version:

Vant Cli 是一个 Vue 组件库构建工具,通过 Vant Cli 可以快速搭建一套功能完备的 Vue 组件库。

66 lines (65 loc) 2.31 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.traversalDir = void 0; const path_1 = __importDefault(require("path")); const fs_extra_1 = require("fs-extra"); function traversalDir(prefix, filter, options = {}) { if (filter && typeof filter !== 'function') { options = filter; filter = options.filter; } const { includeDirs = false, throwError = true, relativePath = false } = options; const filterFn = filter || ((arg) => arg); const formatPath = (filePath = '') => { if (relativePath) { return filePath.replace(path_1.default.join(prefix, '/'), ''); } return filePath; }; const walker = (uri, parent = '') => { let data = []; const walkerDir = (dir) => { return fs_extra_1.readdir(dir) .then((children) => Promise.all(children.map((child) => walker(path_1.default.join(dir, child), dir)))) .then(async (items) => { if (includeDirs) { const item = await filterFn(uri, parent, true); if (item === false) { return data; } if (item !== undefined) { data.push(formatPath(item)); } } data = items.reduce((array, item) => array.concat(item), data); return data; }); }; return fs_extra_1.stat(uri) .then(async (stats) => { const isDirectory = stats.isDirectory(); if (isDirectory) { return walkerDir(uri); } const item = await filterFn(uri, parent, false); if (item === false) { return data; } if (item !== undefined) { data.push(formatPath(item)); } return data; }) .catch((error) => { if (throwError) { throw error; } return data; }); }; return walker(prefix); } exports.traversalDir = traversalDir;