npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

code-line-reporter

v0.0.2

Published

:This nompm package will be uesd to count the number og lif lines of code.

Readme

代码统计工具开发日志


10月25日

  • 功能实现:对给定的目录进行遍历,获得所有文件的路径。(默认用户输入的是文件夹路径)

10月26日

  • 功能实现:对文件实现简单的统计代码行量,包括代码的总行数和空行数。

10月27日

  • 功能拆分:把统计代码的功能独立出来。
  • 功能实现:实现统计注释行数。
  • 现存问题(已解决):处理注释内包含"//"和注释在代码后面的情况,如 let commentLineCount = 0; // 注释行数

10月28日

  • 问题解决:解决10月27日遗留的问题。
  • 功能实现:完成对七大编程语言(Java、XML、Python、C#、PHP、JavaScript、CSS)的单行和多行注释的统计。

10月29日

  • 功能优化:对Lua、HTML文件的注释正则匹配进行调整,并正确统计注释行数。
  • 功能增强:对目录的输入方式进行优化,允许用户自己输入目录。
  • 逻辑判断:对用户输入的目录进行判断,如果是文件夹则继续处理,如果是文件则直接进行统计。

10月30日

  • 代码重构:把文件注释匹配的正则表达式拆分出去。
  • 文件过滤:对文件进行判断,不符合后缀名的文件不进行统计代码行量。

现阶段存在的问题

  1. 依赖包统计:会对依赖包进行统计,需要进一步优化。
  2. 注释行数统计重构:Lua文件和XML文件的处理逻辑需要重构,以提高代码的可读性和规范性。

11月2日

  • 问题解决:解决会对依赖包进行统计的问题,通过默认配置文件对文件目录进行匹配,若匹配成功则忽略。
  • 代码重构:对Lua文件和XML文件的正则表达式进行修改,与其他文件的格式一致,提高代码的规范性和可读性。

11月3日

  • 功能增强:增加对Vue文件的统计。

11月4日

  • 功能实现:对每种编程语言的代码行数进行累加并输出。

11月5日

  • 功能增强:添加一个 --summary 参数来只显示汇总信息。
  • 功能扩展:增加对TS文件的统计。

11月6日

  • 界面优化:对输出结果进行优化,使其看起来更美观。

11月7日

  • 功能增强:增加对go文件的统计。

11月8日

  • 路径验证增强:在程序开始执行时,首先检查用户是否提供了路径参数。然后验证该路径是否存在,以及是否是一个目录。如果路径验证失败,程序将输出错误信息并退出。

11月9日

  • 文件系统操作异常处理:在 readDirectory.js 中的 findFiles 函数里,为 fs.statSync 和 fs.readdirSync 方法添加 try-catch 结构,以捕获文件读取和目录访问的异常,避免程序因文件系统错误中断。
  • 文件读取错误处理:在 fileCounter.js 文件的 countLinesInDirectory 函数中,修改 fs.readFile 异常处理方式,若文件读取失败,使用 reject 将错误传递给调用方,以便进一步处理。
  • 注释模式匹配错误处理:在 getCommentPatternsByExtension 函数中,若无法找到文件类型对应的注释模式,返回 null 并在调用处检查,确保未找到匹配模式时直接终止统计操作并抛出错误提示。
  • Promise 异常处理:在 calculateTotalLines 函数中增加 try-catch 或 .catch 异常捕获,确保 Promise.all 处理文件统计时的错误得到正确处理并输出错误信息。

11月12日

  • 用户自定义排除目录:允许用户通过命令行在执行时手动输入他们想要排除的目录或文件。用户可以连续输入排除项,通过输入 'done' 来结束输入过程。

11月15日

命令行参数处理优化及错误检查增强

  • 参数检查增强:我们对命令行参数进行了严格的检查,确保用户至少提供了一个必需的参数,即目录路径。如果用户未能提供该路径,程序将打印出正确的使用方法,并立即退出,从而避免后续的无效操作。

  • 错误处理优化:路径验证的代码块已被提前至处理其他逻辑之前,以确保路径的有效性在程序继续执行前得到确认。这一改进有效避免了在后续代码中可能因无效路径而引发的错误。

  • --summary 标志处理:我们对 --summary 标志的处理逻辑进行了完善,明确规定该选项必须是命令行中的第二个参数,并且其后不能跟随其他参数。如果用户未按照此规定使用 --summary,程序将打印出正确的使用方法,并立即退出。

  • 代码结构优化:通过将路径验证和 --summary 标志的处理逻辑进行分离,我们使得代码结构更加清晰明了,从而提高了代码的可读性和可维护性。

  • 用户输入提示优化:在收集用户要排除的目录或文件之前,我们增加了一个简洁明了的提示信息,以指导用户进行正确的操作。这一改进显著提升了用户体验。


11月19日

  • 导出文件:在用户进行查询操作的同时,系统能够自动触发文件导出功能,确保查询结果即时保存为文件。

11月20日

  • 参数解析增强:增加了对--export参数的解析,用于控制是否导出结果到文件。
  • 导出控制逻辑:在处理命令行参数时,增加了对--export标志的检查,根据其存在与否设置exportResult变量。

11月21日

  • 优化嵌套结构:通过函数拆分和早返回逻辑,简化了 findFiles 函数的层级结构,将文件和目录的处理逻辑分别抽离到 processFile 和 processDirectory 函数中,提升代码的可读性和维护性。

11月23日

  • 输出逻辑优化:简化了结果输出逻辑,统一通过字符串拼接完成输出文本的生成,避免多次重复 console.log,提升代码执行效率和可读性。

11月25日

输出内容增强

  • 日期与时间戳的添加:在输出内容的开头部分,新增了“日期 : 2024-11-25 17:02:04”这一信息,为用户提供了此次文件统计的具体时间记录,便于后续的数据追溯和比对。

  • 目录路径的明确:通过增加“目录 : F:\node_pkg”这一信息,用户能够清晰地了解到本次统计是针对哪个目录下的文件进行的,增强了输出的可读性和实用性。

  • 统计汇总信息的完善:在原有详细文件统计信息的基础上,新增了总计信息的汇总。

  • 举例


11月26日

  • 输出格式优化:表格化展示:将原先的纯文本输出改为表格形式,使得统计信息更加直观和易读。
  • 举例

11月27日

  • 参数处理增强:增加了对命令行参数的解析,支持通过 --exclude 参数直接指定排除目录,减少了用户在无排除目录需求时的交互步骤。
  • 交互流程优化:当用户未通过命令行参数提供排除目录时,程序会提示用户输入,否则自动跳过输入步骤,避免了不必要的用户输入。
  • 举例
  • 举例

11月30日

  • 动态列宽:优化了表格列宽计算,使表格适应不同长度的文件路径。
  • 格式统一:调整了表头和分隔线,使表格格式更加统一。
  • 数据对齐:改进了内容行生成,确保数据在表格中对齐。
  • 总计行简化:简化了总计行的计算逻辑,使代码更简洁。
  • 举例

12月1日


与代码统计分析工具.exe进行对比

以下是本工具与“代码统计分析工具.exe”在几个关键方面的对比:

  • 统计准确性

    • 代码统计分析工具.exe
      • 缺点:统计行数时存在不准确的情况。
    • 本工具
      • 优势:提供更准确的代码行数统计,确保准确性。
  • 自定义排除目录

    • 代码统计分析工具.exe
      • 缺点:不支持用户自定义排除目录,缺乏灵活性。
    • 本工具
      • 优势:允许用户指定排除的目录,确保统计结果更加符合实际需求。
  • 依赖包统计

    • 代码统计分析工具.exe
      • 缺点:会对项目中的依赖包进行统计,导致统计结果偏大。
    • 本工具(可选)
      • 特性:对依赖包进行排除。
  • 处理速度

    • 代码统计分析工具.exe
      • 缺点:当项目文件数过多时,统计速度会变慢,影响用户体验。
    • 本工具
      • 优势:针对大规模项目进行了优化,确保在处理大量文件时仍能保持较快的统计速度。
  • 统计文件类型

    • 代码统计分析工具.exe
      • 缺点:不支持用户指定统计文件类型,灵活性低。
    • 本工具
      • 优势:用户可以指定统计的文件类型,确保统计结果更加精准且符合项目需求。

本项目可以优化的地方

用户可以统计指定文件类型。


12月2日

与插件进行对比

本工具存在的问题

  1. 多行注释中的单行注释匹配问题

    • 在多行注释中,如果存在单行注释的格式,系统也会错误地将其识别为多行注释的一部分。
  2. 多行注释与有效代码行注释的混淆

    • 当多行注释的开头与包含有效代码的行注释处于同一行时,系统可能会错误地累计计算这两者的注释行数。
  3. 多行注释与空行的混淆

    • 当多行注释种包含空行的时候,系统会把多行注释中的空行识别成空行数,实际上应该为空行数。
  • 问题解决1:解决了在统计空行时,如果空行处在多行注释中也会被匹配的问题。
  • 问题解决2:解决了xml文件在统计多行注释的时候,因为贪婪匹配,会统计不准确的问题。

12月3日

  • 核心问题重构:在原代码的基础上对以上问题进行解决,发现现有的正则表达式不能完全解决现存的诸多问题。所以对统计代码行量功能单独拿出来进行重构完善,完成部分代码重构。

12月4日

  • 核心问题重构:对核心功能重构完成,并进行测试。测试完成后,把重构后的功能与原功能进行替换。解决了上述问题。

12月7日

  • 新增文件夹统计功能:实现了一个新的功能,用于统计指定文件夹及其子文件夹中的文件数、有效行、注释行、空行以及总行数。功能实现后,进行了测试,确保统计结果的准确性。测试完成后,将此功能集成到系统中。
  • 可能存在优化的问题:它只能统计该文件夹内的文件数,如果文件夹内还有文件夹,它不会统计该文件夹。
  • 举例

12月9日

  • 解决了可能存在的优化的问题:正确统计文件夹的文件数,分两种形式进行统计。1、统计文件夹内的文件数。2、统计文件夹内的所有文件数(包括嵌套文件夹)。
  • 举例

12月10日

  • 存在bug:在对大型文件进行测试的时候,出现bug,读取不到相应的文件数。
  • 对目录统计进行修改:对功能进行修改。
  • 举例

12月11日

  • 解决bug:对目录统计功能进行了修改重构,使得正确统计。
  • 举例

12月12日

  • 发布为NPM包:把项目打包发布为npm包。
  • 测试npm包:对npm包进行下载测试。
  • 项目使用文档:撰写项目使用文档。
  • 项目实现预期效果图
  • 举例

12月13日

  • 功能扩展:添加了统计指定类型文件的功能。
  • 修改了 index.js 文件,增加了对 --type 参数的支持,允许用户通过命令行指定要统计的文件类型。
  • readDirectory.js 文件中增加了文件类型的过滤逻辑,确保只统计用户指定的文件类型。
  • 更新了命令行帮助信息,加入了关于如何使用 --type 参数指定文件类型的说明。
  • 进行了功能测试,确保新功能按预期工作,能够正确地根据用户输入的文件类型过滤并统计代码行数。
  • 举例
  • 项目结构修改:对项目结构进行修改,使得用户使用npm包更加方便,提交修改版本。
  • 举例
  • 举例