@honor-minigame/cli
Version:
honor minigame pack cli
58 lines (53 loc) • 1.51 kB
JavaScript
import crypto from "crypto"
import fs from "fs"
import fse from "fs-extra"
import path from "path"
/**
* 获取 SHA256 摘要
* @param {Buffer} buffer - buffer
* @string {String<hex-string>} - hash 值
*/
export function calcDataDigest(buffer) {
const hash = crypto.createHash("SHA256")
hash.update(buffer)
return hash.digest()
}
const ignoreDirectory = ['node_modules', 'remote', 'dist', 'sign']
/**
* 遍历所有子目录,列出文件
*
* @param {String} cwd - 目标目录
* @param [filesys] - 文件系统
* @returns {Files} - 基于 cwd 的文件列表
*/
export function lsdirdeep(cwd, filesys = fs) {
// 递归函数
function lsdir(cwd, dir, filesys) {
let files = []
if (!ignoreDirectory.find(item => item === dir)) {
const directory = path.posix.join(cwd, dir)
const rawFiles = filesys.readdirSync(directory)
rawFiles.forEach((file) => {
const filepath = path.posix.join(directory, file)
const relatpath = path.posix.join(dir, file)
const stat = filesys.statSync(filepath)
if (stat.isFile()) {
files.push(relatpath)
} else {
files = files.concat(lsdir(cwd, relatpath, filesys))
}
})
}
return files
}
return lsdir(cwd, ".", filesys)
}
/**
* 加载json文件
*
* @param {String} path - 目标目录
* @returns {JSON} - json文件内容
*/
export function loadJson(path) {
return fse.readJSONSync(path)
}