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 ...
随机推荐
- day04-原生的API&注解方式
原生的API&注解方式 1.MyBatis原生的API调用 1.1原生API快速入门 需求:在前面的项目基础上,使用MyBatis原生的API完成,即直接通过SqlSession接口的方法来完 ...
- day07-IO流应用02
Java坦克大战07 8.IO流应用02 8.3记录退出游戏时敌人坦克坐标/方向,存盘退出 8.3.1思路分析 在Recorder类中,增加一个Vector集合,用来接收从MyPanel类中传入的en ...
- KTL 一个支持C++14编辑公式的K线技术工具平台 - 第九版,数据分析工具。支持通达信日线数据。增强即时插件编程体现。
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- 实时云渲染:流式传输 VR 和 AR 内容
想象一下无需专用的物理计算机,甚至无需实物连接,就能获得高质量的 AR/VR 体验是种什么样的体验? 过去,与 VR 交互需要专用的高端工作站,并且根据头显.壁挂式传感器和专用的物理空间.VR 中的复 ...
- 3DCAT首届行业生态交流会|爱智慧科技有限公司CEO梁新刚:工业元宇宙的”形“与”神“
2021年12月17日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的 云XR如何赋能元宇宙--3DCAT实时云渲染首届行业生态合作交流会 圆满落幕.此次活动围绕"云XR如 ...
- 记录--纯CSS实现一个简单又不失优雅的步骤条
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 步骤条是一种用于引导用户按照特定流程完成任务的导航条,在各种分步表单交互场景中广泛应用.先来看一下几个主流前端 UI 框架中步骤条组件的样 ...
- WPF 模仿微信顶部断网提示气泡
直接看顶部气泡的效果吧 顶部气泡主要要做三个工作 1.定位到顶部居中 2.气泡需要跟随窗体 3.气泡不可以遮挡住其他程序界面 原生的WPF Poupu控件不会跟随目标移动且在Z轴上会置顶,所以存在打开 ...
- 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第7章
本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 暂无 本章释疑: 暂无,等待你的提问 致谢: MVP 林德熙 MVP 吕毅 sPhinX 相关链接 试读记录
- 一秒变身艺术家!U2Net 跨界肖像画,让你的头像瞬间细节完美复刻,打造个性化头像新风潮!
效果 测试图片来自网络,如有侵权,联系删除. 项目 关注微信公众号,回复关键字:"一秒变身艺术家",获取程序! 模型信息 Inputs ---------------------- ...
- KingbaseES 分区表修改字段类型
KingbaseES普通表修改表结构请参考:KingbaseES变更表结构表重写问题 数据类型转换重写与不重写: varchar(x) 转换到 varchar(y) 当 y>=x,不需要重写. ...