用 nodejs 实现一个命令行工具, 统计输入目录下面指定代码的行数【热度: 732】

关键词:统计指定目录下代码行数

要实现一个命令行工具来统计输入目录下指定代码的行数,你可以使用Node.js的fs模块来读取文件内容并进行行数统计。以下是一个简单的实现示例:

const fs = require('fs');
const path = require('path');

function countLinesInDirectory(dirPath, fileExtension) {
  let totalLines = 0;

  function countLinesInFile(filePath) {
    const content = fs.readFileSync(filePath, 'utf-8');
    const lines = content.split('\n');
    totalLines += lines.length;
  }

  function processDirectory(directoryPath) {
    const files = fs.readdirSync(directoryPath);

    files.forEach((file) => {
      const filePath = path.join(directoryPath, file);
      const stats = fs.statSync(filePath);

      if (stats.isFile() && path.extname(file) === fileExtension) {
        countLinesInFile(filePath);
      } else if (stats.isDirectory()) {
        processDirectory(filePath);
      }
    });
  }

  processDirectory(dirPath);

  return totalLines;
}

// 命令行参数,第一个参数是目录路径,第二个参数是文件扩展名
const [_, __, dirPath, fileExtension] = process.argv;

const linesCount = countLinesInDirectory(dirPath, fileExtension);
console.log(`Total lines of ${fileExtension} files in ${dirPath}: ${linesCount}`);

你可以将上述代码保存为一个JavaScript文件,比如line-counter.js。然后,在终端中运行以下命令:

node line-counter.js /path/to/directory .js

其中/path/to/directory是你要统计的目录路径,.js是你要统计的文件扩展名。运行命令后,程序将会输出指定文件类型在指定目录中的总行数。

你可以根据需要自定义输出格式、文件过滤规则等。此示例只是一个基本的实现,你可以根据具体需求进行扩展和优化。