t-comm
Version:
专业、稳定、纯粹的工具库
285 lines (278 loc) • 7.92 kB
JavaScript
;
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;