@daiyu-5577/quickbuild
Version:
front-end build service
56 lines (55 loc) • 2.52 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { createWriteStream } from 'node:fs';
import { statSync, constants } from 'node:fs';
import fs, { access } from 'node:fs/promises';
import { checkMakeDir } from './exec.js';
import path from 'node:path';
const __dirname = new URL('.', import.meta.url).pathname;
export const getWriteStream = (absDir, filename, increase) => __awaiter(void 0, void 0, void 0, function* () {
yield checkMakeDir(absDir);
const fileParse = path.parse(filename);
let localFileName = `${fileParse.name}${increase ? `(${increase})` : ''}${fileParse.ext}`;
const filePath = path.join(absDir, localFileName);
try {
yield fs.access(filePath, constants.F_OK);
return yield getWriteStream(absDir, filename, increase ? increase += 1 : increase = 1);
}
catch (error) {
const writeStream = createWriteStream(filePath, {
flags: 'a',
});
writeStream.on('error', (err) => {
console.error(`写入文件时发生错误: ${err}`);
});
return { localFileName, writeStream };
}
});
export const autoClearFiles = (absDir_1, ...args_1) => __awaiter(void 0, [absDir_1, ...args_1], void 0, function* (absDir, maxSize = 50) {
try {
yield access(absDir, constants.F_OK);
const files = yield fs.readdir(absDir);
if (files.length <= maxSize)
return;
files.sort((a, b) => {
const statA = statSync(path.join(absDir, a));
const statB = statSync(path.join(absDir, b));
return statA.mtime.getTime() - statB.mtime.getTime();
});
for (let i = 0; i < files.length - maxSize; i++) {
const file = files[i];
const filePath = path.join(absDir, file);
yield fs.rm(filePath);
}
}
catch (error) {
console.log(error);
}
});