UNPKG

@honor-minigame/cli

Version:

honor minigame pack cli

58 lines (53 loc) 1.51 kB
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) }