UNPKG

@daiyu-5577/quickbuild

Version:

front-end build service

60 lines (59 loc) 2.73 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, existsSync } from 'node:fs'; import fs, { access } from 'node:fs/promises'; import { checkMakeDir } from './exec.js'; import chalk from 'chalk'; 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 absFilePath = path.join(absDir, localFileName); try { yield fs.access(absFilePath, constants.F_OK); return yield getWriteStream(absDir, filename, increase ? increase += 1 : increase = 1); } catch (error) { const writeStream = createWriteStream(absFilePath, { flags: 'a', }); writeStream.on('error', (err) => { console.error(`写入文件时发生错误: ${err}`); }); return { absFilePath, localFileName, writeStream }; } }); export const autoClearFiles = (absDir_1, ...args_1) => __awaiter(void 0, [absDir_1, ...args_1], void 0, function* (absDir, maxSize = 50) { try { if (!existsSync(absDir)) return; 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, { recursive: true }); } console.log(chalk.green(`${absDir} 限制${maxSize}清理成功`)); } catch (error) { console.log(error); } });