@honor-minigame/cli
Version:
honor minigame pack cli
59 lines (53 loc) • 1.52 kB
JavaScript
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
}
}