node统计指定文件夹内代码行数
1. 来源
- 想对于自己接触前端日常学习与思考的代码行数进行一个统计,看自己大约敲了多少代码
2.代码
const fs = require('fs')
const path = require('path')
function calculateCodeLines ({ directory = '', writeResFilePath = '',
fileReg = /\.(js|ts|jsx|tsx|vue|html)$/, blckNameList = [], deleteComment = true },) {
let totalLines = 0
let fileList = {}
let fileCounts = 0
blckNameList = blckNameList.concat(['node_modules', '.lock'])
function traverseFolder (dir) {
const files = fs.readdirSync(dir)
for (const file of files) {
const filePath = path.join(dir, file)
const stats = fs.statSync(filePath)
if (blckNameList.some(item => filePath.includes(item))) {
continue
}
if (stats.isDirectory()) {
traverseFolder(filePath)
} else if (
stats.isFile() &&
fileReg.test(file) // 只计算指定扩展名的文件
) {
let code = fs.readFileSync(filePath, 'utf8')
// 是否去除注释
deleteComment && (code = code.replace(/\/\/(.*)/g, ''))
deleteComment && (code = code.replace(/\/\*[\s\S]*?\*\//g, ''))
// 统计行并且去除空行
const lines = code.split('\n').filter(line => line.trim() !== '').length
// 是否写入文件
writeResFilePath && (fileList[fileCounts + 1 + '==' + filePath] = lines)
// 累加代码行数
totalLines += lines
fileCounts++
}
}
}
traverseFolder(directory)
writeResFilePath && (() => {
fs.writeFile(writeResFilePath, JSON.stringify({ totalLines, fileCounts, fileList }, null, 2), { encoding: 'utf-8' }, (err) => {
if (err) {
console.log('文件写入错误', err) // zdz-log
}
})
})()
const res = { totalLines, fileCounts }
console.log(res) // zdz-log
return res
}
calculateCodeLines({
// 要统计的文件夹路径
directory: '/Users/zdz/Desktop/learn-code',
// 结果是否写入文件以及文件名称 结果为JSON字符串
writeResFilePath: '/Users/zdz/Desktop/learn-code/totalCode.json',
// 要统计哪些格式的文件
fileReg: /\.(js|ts|jsx|tsx|vue|html)$/,
// 要过滤哪些文件夹或者文件不算入统计 默认会忽略 'node_modules', '.lock'
blckNameList: ['slintrc', '11.source-code-read', 'React_Nativ', 'onfig.js', 'config/jest/', 'ackages/', 'ue_source/', 'e/08_vue3直播项目_project-admin'],
// 是否删除注释后统计
deleteComment: false,
})
package.json
{
"dependencies": {
"typescript": "^4.9.5"
},
"scripts": {
"lines":"node /Users/zdz/Desktop/learn-code/06.思考问题/02.js探索/26.统计代码行数.js"
},
"semi": false
}
3.结果


node统计指定文件夹内代码行数的更多相关文章
- 【原】Mac下统计任意文件夹中代码行数的工
[链接][原]Mac下统计任意文件夹中代码行数的工http://www.cnblogs.com/wengzilin/p/4580646.html
- 【原】Mac下统计任意文件夹中代码行数的工具——cloc
这里介绍一个Mac系统统计代码行数的工具cloc. 1.首先,安装homebrew,已安装的请跳过. 打开终端工具Terminal,输入下列命令.过程中会让你按RETURN键以及输入mac桌面密码,按 ...
- OC获取文件(夹)的代码行数
/* 考察NSString NSArray NSFileManager */ #import <Foundation/Foundation.h> /* 计算单个文件的代码行数 path:文 ...
- 统计py文件或目录代码行数
bug:当遇到3个"""时 可能会将下面的代码不计入代码总行数 import os def count_path(path,countcode): if os.path. ...
- 怎么统计指定文件夹下含有.xml格式的文件数目
如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...
- iOS 统计Xcode整个工程的代码行数
小技巧5-iOS 统计Xcode整个工程的代码行数 1.打开终端 2.cd 空格 将工程的文件夹拖到终端上,回车,此时进入到工程的路径 此时已经进入到工程文件夹下 3.运行指令 a. find . - ...
- python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)
1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...
- 统计py文件中的代码行
希望是输入一个合法的文件夹的路径,然后代码自动读取该文件夹下的每个py结尾的文件内的代码行数,最后汇总一个数,但现在只是有思路,却没时间写,这是能读取同级文件下的某个文件, with open('te ...
- summernote图片上传功能保存到服务器指定文件夹+php代码+java方法
1.summernote富文本编辑器 summernote是一款基于bootstrap的富文本编辑器,是一款十分好用的文本编辑器,还附带有图片和文件上传功能. 那么在我们网站中想吧这个图片上传到服务器 ...
- 利用Clojure统计代码文件数量和代码行数
;; 引入clojure的io包 (use '[clojure.java.io]) ;; 遍历目录将所有符合要求的文件做为列表返回 (defn walk [dirpath pattern] (doal ...
随机推荐
- 代码片段管理软件 - 发现 utools 这个工具还行 windows软件
代码片段管理软件 - 发现 utools 这个工具还行 windows软件 介绍 这个软件不是专业的代码片段工具 好在还能凑合用 最完美的还是苹果那个软件,但是用的win没办法了 这个可以粘贴到vsc ...
- 逆向通达信Level-2 续六 (调试pad控件)
调试终端面版单元, 以及宿主窗口 调试大数据面版单元, 以及宿主窗口 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信 ...
- 【STM32F4 HAL】MPU6050食用
关于MPU6050模块的食用>_<(本人比较菜,写的不好或有错误的地方欢迎大佬指出) 最近学校冬令营发了个MPU6050模块,第一次弄也花了我花了不少时间,于是就把其中一些步骤以及要点简单 ...
- java方法的内存及练习
方法的内存 一.方法调用的基本内存原理: Java内存分配 栈: 方法运行时使用的内存方法进栈运行,运行完毕就出栈 堆: newl出来的,都在堆内存中开辟了一个小空间 方法区: 存储可以运行的clas ...
- 记录--H5页面对接微信支付踩坑杂记
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 应用背景:vite搭建的vue3项目 需求背景:功能都涉及了支付业务,故需要和外部支付系统对接 外部支付系统:聚合支付.微信小程序支 ...
- Ubuntu安装OpenOffice
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/quantum7/article/det ...
- Jmeter前言
前言 为什么要撰写这样一个教程呢? 深入学习Jmeter 温故而知新.尽管我已经使用JMeter很长时间,但还有许多元件我并不十分了解,因此,编写教程的过程成为了我的学习过程,通过反复回顾和整理知识, ...
- C#的播放资源文件里的音频例子 - 开源研究系列文章
今天无聊,想起原来开发的待办列表TodoList里还缺个提醒声音,于是就添加了提供声音模块代码.然后想着记录一下,让更多的读者能够复用这个模块代码,于是就有了此博文.这个例子只是用于播放资源文件里的w ...
- Docker部署之使用docker-compose部署(全新的干净的服务器,从0开始搭建)
部署环境准备 安装yum # 安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 安装d ...
- AXI4的主机协议代码分析
AXI4的主机协议代码分析 一.模块分析 (1)端口列表 input wire INIT_AXI_TXN, // Asserts when ERROR is detected output reg E ...