UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

285 lines (278 loc) 7.92 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var fs = require('fs'); var path = require('path'); var fs_fs = require('../fs/fs.js'); var time_time = require('../time/time.js'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var fs__namespace = /*#__PURE__*/_interopNamespace(fs); var path__namespace = /*#__PURE__*/_interopNamespace(path); var LOG_DIR = 'log'; function innerCopy(src, dist) { if (fs__namespace.statSync(src).isFile()) { return; } var paths = fs__namespace.readdirSync(src); paths.forEach(function (p) { var tSrc = "".concat(src, "/").concat(p); var tDist = "".concat(dist, "/").concat(p); var stat = fs__namespace.statSync(tSrc); if (stat.isFile()) { // 判断是文件还是目录 fs_fs.writeFileSync(tDist, fs_fs.readFileSync(tSrc)); } else if (stat.isDirectory()) { innerCopyDir(tSrc, tDist); // 当是目录是,递归复制 } }); } /** * 复制目录、子目录,及其中的文件 * @param src {String} 要复制的目录 * @param dist {String} 复制到目标目录 */ function innerCopyDir(src, dist) { var b = fs__namespace.existsSync(dist); if (!b) { mkDirsSync(dist); // 创建目录 } innerCopy(src, dist); } // 递归创建目录 同步方法 function mkDirsSync(dirname) { if (fs__namespace.existsSync(dirname)) { return true; } if (mkDirsSync(path__namespace.dirname(dirname))) { fs__namespace.mkdirSync(dirname); return true; } } /** * 拷贝目录以及子文件 * @param {Object} src * @param {Object} dist * @param {Object} callback */ function copyDir(src, dist, callback) { innerCopyDir(src, dist); if (callback) { callback(); } } /** * 删除目录 * @param {Object} path */ function deleteFolder(tPath) { var files = []; if (fs__namespace.existsSync(tPath)) { files = fs__namespace.readdirSync(tPath); files.forEach(function (file) { var curPath = "".concat(tPath, "/").concat(file); if (fs__namespace.statSync(curPath).isDirectory()) { deleteFolder(curPath); } else { fs__namespace.unlinkSync(curPath); } }); fs__namespace.rmdirSync(tPath); } } /** * 递归删除空目录 * @param path 路径 * @param level 层级 */ function rmEmptyDir(tPath, level) { if (level === void 0) { level = 0; } var files = fs__namespace.readdirSync(tPath); if (files.length > 0) { var tempFile_1 = 0; files.forEach(function (file) { tempFile_1 += 1; rmEmptyDir("".concat(tPath, "/").concat(file), level + 1); }); if (tempFile_1 === files.length && level !== 0) { fs__namespace.rmdirSync(tPath); } } else { level !== 0 && fs__namespace.rmdirSync(tPath); } } function deleteFolderRecursive(path, options) { var _a, _b; if (options === void 0) { options = { deleteFile: false, log: false }; } var deleteFile = (_a = options.deleteFile) !== null && _a !== void 0 ? _a : false; var log = (_b = options.log) !== null && _b !== void 0 ? _b : false; if (fs__namespace.existsSync(path)) { var list = fs__namespace.readdirSync(path); list.forEach(function (file) { var curPath = "".concat(path, "/").concat(file); if (fs__namespace.statSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); } else { // delete file if (deleteFile) { fs__namespace.unlinkSync(curPath); } } }); if (!list.length) { if (log) { console.log('>>> delete: ', path); } fs__namespace.rmdirSync(path); } } } /** * 拷贝文件 * @param {Object} from 文件来自那里 * @param {Object} to 拷贝到那里 */ function copyFile(from, to) { return fs_fs.writeFileSync(to, fs_fs.readFileSync(from)); } /** * 递归遍历文件夹,并执行某操作 * @param {Function} cb 回调参数 * @param {String} path 文件夹或文件路径 */ function traverseFolder(cb, tPath) { if (fs__namespace.statSync(tPath).isDirectory()) { var files = fs__namespace.readdirSync(tPath); files.forEach(function (file) { var curPath = path__namespace.resolve(tPath, file); // `${tPath}/${file}`; traverseFolder(cb, curPath); }); } else { cb(tPath); } } function readJsonLog(file, defaultContent) { if (defaultContent === void 0) { defaultContent = '{}'; } var filePath = "./".concat(LOG_DIR, "/").concat(file); if (!fs__namespace.existsSync(filePath)) { createLogDir(); return defaultContent; } return fs_fs.readFileSync(filePath) || defaultContent; } function getJsonLogDir() { return path__namespace.resolve(process.cwd(), './log'); } function saveJsonToLog(content, file, needLog) { if (needLog === void 0) { needLog = true; } if (!needLog) return; createLogDir(); fs_fs.writeFileSync("./".concat(LOG_DIR, "/").concat(file), content, true); } function saveJsonToLogMore(content, file, options) { var _a, _b; var needLog = (_a = options === null || options === void 0 ? void 0 : options.needLog) !== null && _a !== void 0 ? _a : true; var max = (_b = options === null || options === void 0 ? void 0 : options.max) !== null && _b !== void 0 ? _b : 10; if (!needLog) return; createLogDir(); var filePath = "./log/".concat(file); var beforeContent = []; var newContent = [{ logTime: time_time.timeStampFormat(Date.now(), 'yyyy-MM-dd hh:mm:ss'), data: content }]; if (fs__namespace.existsSync(filePath)) { try { beforeContent = fs_fs.readFileSync(filePath, true).logList || []; } catch (err) { beforeContent = []; } } if (beforeContent && Array.isArray(beforeContent)) { newContent.push.apply(newContent, beforeContent); } newContent = newContent.slice(0, max); try { fs__namespace.writeFile(filePath, JSON.stringify({ logList: newContent }, null, 2), { encoding: 'utf-8' }, function () {}); } catch (err) {} } function getJsonFromLog(file) { var filePath = "./".concat(LOG_DIR, "/").concat(file); var data = {}; if (!fs__namespace.existsSync(filePath)) { console.log('[getJsonFromLog] no exist'); } else { var originFile = fs__namespace.readFileSync(filePath, { encoding: 'utf-8' }); try { data = JSON.parse(originFile); } catch (err) {} } return data; } function createLogDir() { if (!fs__namespace.existsSync("./".concat(LOG_DIR))) { fs__namespace.mkdirSync("./".concat(LOG_DIR)); } } function getFileName(file) { var basename = path__namespace.basename(file); var extname = path__namespace.extname(file); var fileName = basename.replace(new RegExp("".concat(extname, "$")), ''); return fileName; } function readJson(content, file) { var data = {}; try { data = JSON.parse(content); } catch (e) { console.error('>>> read json error: ', file); } return data; } exports.copyDir = copyDir; exports.copyFile = copyFile; exports.deleteFolder = deleteFolder; exports.deleteFolderRecursive = deleteFolderRecursive; exports.getFileName = getFileName; exports.getJsonFromLog = getJsonFromLog; exports.getJsonLogDir = getJsonLogDir; exports.mkDirsSync = mkDirsSync; exports.readJson = readJson; exports.readJsonLog = readJsonLog; exports.rmEmptyDir = rmEmptyDir; exports.saveJsonToLog = saveJsonToLog; exports.saveJsonToLogMore = saveJsonToLogMore; exports.traverseFolder = traverseFolder;