UNPKG

@honor-minigame/cli

Version:

honor minigame pack cli

59 lines (53 loc) 1.52 kB
import fs from 'fs' import path from 'path' import { info } from '../../utils/logger.js' /** * 递归扫描所有文件 * @param {String} root 要扫描的根目录 * @param {Functioin} filter 要过滤的文件, 默认过滤.xxx * @param {Array} files 扫描出来的的文件集合 * @param {String} prefix 用于递归时传递内层的dir */ export default function readdir(root, filter = noDotFiles, files = [], prefix = '') { const dir = path.posix.join(root, prefix) if (!fs.existsSync(dir)) return files if (fs.statSync(dir).isDirectory()) { fs.readdirSync(dir) .filter(function (name, index) { return filter(name, index, dir) }) .forEach(function (name) { readdir(root, filter, files, path.posix.join(prefix, name)) }) } else { files.push(prefix) } return files } export function noDotFiles(x) { return x[0] !== '.' } export function noDotSymbolsFiles(filename, index, dir) { try { if (filename.includes('symbols')) { var filePath = path.resolve(dir, filename) var content = fs.readFileSync(filePath, { encoding: 'utf-8' }) if (isJsonString(content) && content.includes('invoke_iiii')) { info('release打包过滤掉symbols文件:' + filePath) return false } } } catch (err) { } return true } function isJsonString(str) { try { JSON.parse(str) return true } catch (e) { return false } }