build-analysis
Version:
A file size for analyzing vue build artifacts
63 lines (58 loc) • 1.93 kB
JavaScript
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);