UNPKG

build-analysis

Version:

A file size for analyzing vue build artifacts

63 lines (58 loc) 1.93 kB
#!/usr/bin/env node console.log("--------正孚软件@1.0.1------ "); console.log(" ____________ ______ _ _ "); console.log("|___ / ____| ____| | | |"); console.log(" / /| |__ | |__ | | | |"); console.log(" / / | __| | __| | | | |"); console.log(" / /__| |____| | | |__| |"); console.log("/_____|______|_| | ____/ "); var fs = require("fs"); //遍历文件夹,获取所有文件夹里面的文件信息 function geFileList(path) { var filesList = []; readFile(path, filesList); return filesList; } //遍历读取文件 function readFile(path, filesList) { files = fs.readdirSync(path); files.forEach(walk); function walk(file) { states = fs.statSync(path + "/" + file); if (states.isDirectory()) { readFile(path + "/" + file, filesList); } else { let obj = new Object(); obj.size = states.size; //文件大小,默认字节为单位 obj.name = file; //文件名 obj.path = path.slice(2) + "/" + file; //文件绝对路径 filesList.push(obj); } } } //写入文件 function writeFile(fileName, data) { fs.writeFile(fileName, data, "utf-8", complete); function complete() { // eslint-disable-next-line console.log("\033[32m -----文件解析成功----- \033[0m"); console.log("\033[32m ------📦已完成📦----- \033[0m"); } } var filesList = geFileList("./app"); var nowTime = Date.now(); var str = nowTime + "\n"; for (var i = 0; i < filesList.length; i++) { var item = filesList[i]; var desc = item.path + item.name + " " + item.size + "b"; str += desc + "\n"; } function formatBytes(bytes, decimals = 2) { if (bytes === 0) return "0kb"; const k = 1024; const dm = decimals < 0 ? 0 : decimals; const sizes = ["b", "kb", "M", "G", "T"]; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + sizes[i]; } writeFile("./app/fileSize.txt", str);