使用 file-lister 统计项目代码量

233 阅读1分钟

统计项目里各种类型的文件的代码行数,统计代码量。 适用于各种项目的代码量统计工作,基于 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