const fs =require('fs'); /** * 新建目录 * @param {*} dir 目录路径 */ function mkdir(dir){ fs.mkdirSync(dir,{recursive: true}); } /** * 删除目录 * @param {*} dir 目录 */ function rm(dir){ fs.rmSync(dir,{recursive: true}); } function cp(src,target){ fs.cpSync(src,target,{recursive: true}); } /** * 解析 json 格式文件 * @param {*} src 文件路径 * @returns javascript 对象 */ function parseJson(src){ return JSON.parse(fs.readFileSync(src).toString()); } /** * 替换文件中的字符串 * @param {*} filePath 文件路径 * @param {*} repalcer 替换字符 Map(key:需要替换的字符串,value:替换后的字符串) */ function replaceAll(filePath,repalcer){ let content =fs.readFileSync(filePath,{encoding:'utf-8'}); if(repalcer){ for(const key in repalcer){ content =content.replaceAll(key,repalcer[key]); } } fs.writeFileSync(filePath,content); } /** * 合并两个对象 * @param {*} target 目标对象 * @param {*} source 源对象 * @returns 合并后的对象 */ function mergeObject(target, source) { if (source && target) { for (const property in source) { const value = source[property]; if (typeof value === 'object' && !Array.isArray(value)) { if (target[property] === null || typeof target[property] === 'undefined') { target[property] = {}; } mergeObject(target[property], value); } else { if (value !== null && typeof value !== 'undefined') { target[property] = value; } } } } return target; } /** * 合并 json 文件 * @param {*} targetPath 目标文件 * @param {*} srcPath 源文件 * @param {*} includeProperties 包含的需要合并的属性列表 */ function mergeJsonFile(targetPath,srcPath,includeProperties){ const target =parseJson(targetPath); const source =parseJson(srcPath); if(includeProperties && includeProperties.length>0){ for(const property of includeProperties){ if(target[property]){ mergeObject(target[property],source[property]); }else{ target[property] =source[property]; } } }else{ mergeObject(target,source); } fs.writeFileSync(targetPath, JSON.stringify(target, null, ' ')); } module.exports = { mkdir, rm, cp, parseJson, replaceAll, mergeObject, mergeJsonFile, };