fineui是帆软报表和BI产品线所使用的前端框架。
 
 
 

89 lines
2.2 KiB

/**
* @file 各模块文件数量统计脚本(从 BI 搬过来的)
*/
let fs = require('fs');
let path = require('path');
const rootPath = path.resolve(__dirname, '../packages');
// 获取所有的模块名
const modules = fs.readdirSync(rootPath);
const result = [];
let jsFileCount = 0;
let tsFileCount = 0;
let tsxFileCount = 0;
const file = async filePath => {
if (
filePath.endsWith('.js') &&
filePath.indexOf('/dist/') < 0 &&
filePath.indexOf('/webpack/') < 0 &&
filePath.indexOf('/webui-bi/private/') < 0
) {
console.log(jsFileCount + ':' + path.normalize(filePath));
jsFileCount++;
}
if (filePath.endsWith('.ts')) {
tsFileCount++;
}
if (filePath.endsWith('.tsx')) {
tsxFileCount++;
}
};
const reset = () => {
jsFileCount = 0;
tsFileCount = 0;
tsxFileCount = 0;
};
// 递归所有文件夹统计
const codeStat = async (pt, lineFun) => {
let files = fs.readdirSync(pt);
files
.map(file => {
return `${pt}/${file}`;
})
.forEach(file => {
let stat = fs.statSync(file);
if (stat.isDirectory()) {
if (
file.indexOf('__test__') > -1 ||
file.indexOf('__point__') > -1 ||
file.indexOf('third') > -1 ||
file.indexOf('__e2e__') > -1 ||
file.indexOf('__integration__') > -1 ||
file.indexOf('node_modules') > -1
) {
return;
}
codeStat(file, lineFun);
return;
}
if (file.indexOf('.DS_Store') > -1) {
return;
}
lineFun(file);
});
};
const statisticFile = () => {
modules.forEach(i => {
codeStat(`${rootPath}/${i}/src`, file);
result.push({
name: i,
jsFileCount,
tsFileCount,
tsxFileCount,
allFileCount: jsFileCount + tsFileCount + tsxFileCount,
});
reset();
});
console.table(result);
};
statisticFile();
module.exports = {
statisticFile,
};