统计项目里各种类型的文件的代码行数,统计代码量。 适用于各种项目的代码量统计工作,基于 node 的 file-lister 来读取文件。
// count.js
const listFiles = require('file-lister')
const fs = require('fs')
// 代码目录
listFiles(["../src"], function(error, files) {
// 各类型文件数组
const tsxFileList = []
const tsxLineNumberList = []
const tsFileList = []
const tsLineNumberList = []
const lessFileList = []
const lessLineNumberList = []
const otherFileList = []
// files 是目录下的所有文件的数组
files.forEach(function(file, index) {
const content = fs.readFileSync(file, "utf-8") // content string 类型
const num = content.split('\n').length
// 区分代码类型,file 是文件路径 string 类型
if (file.includes(".tsx")) {
tsxFileList.push(file)
tsxLineNumberList.push(num)
} else if (file.includes(".ts")) {
tsFileList.push(file)
tsLineNumberList.push(num)
} else if (file.includes(".less")) {
lessFileList.push(file)
lessLineNumberList.push(num)
} else if (!file.includes(".DS_Store")) {
otherFileList.push(file)
}
})
// console 统计结果
console.log('全部文件个数:', files.length)
console.log('tsx 文件个数:', tsxFileList.length, '\n每个文件的行数:', tsxLineNumberList)
console.log('ts 文件个数:', tsFileList.length, '\n每个文件的行数:', tsLineNumberList)
console.log('less 文件个数:', lessFileList.length, '\n每个文件的行数:', lessLineNumberList)
console.log('其他文件个数:', otherFileList.length, '\n文件名:', otherFileList)
})
用 node 执行 node count.js