UNPKG

@daiyu-5577/quickbuild

Version:

front-end build service

56 lines (55 loc) 2.52 kB
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); } });