国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數

來源:懂視網 責編:小采 時間:2020-11-27 21:52:11
文檔

Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數

Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數:使用Node.JS的大多數用記事本開發(fā),有時侯會需要統(tǒng)計工程代碼量,然后記事本大部分沒有這個功能。其實用node.js幾行代碼就可以實現(xiàn)。 var path = require('path') var fs = require('fs') //需要統(tǒng)計的文件類型,可自己刪減,均小寫 var codes
推薦度:
導讀Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數:使用Node.JS的大多數用記事本開發(fā),有時侯會需要統(tǒng)計工程代碼量,然后記事本大部分沒有這個功能。其實用node.js幾行代碼就可以實現(xiàn)。 var path = require('path') var fs = require('fs') //需要統(tǒng)計的文件類型,可自己刪減,均小寫 var codes

使用Node.JS的大多數用記事本開發(fā),有時侯會需要統(tǒng)計工程代碼量,然后記事本大部分沒有這個功能。其實用node.js幾行代碼就可以實現(xiàn)。

var path = require('path')
var fs = require('fs')
//需要統(tǒng)計的文件類型,可自己刪減,均小寫
var codesFiles = [ '.css', '.js', '.html', '.tmpl', '.part', '.json', '.md', '.txt', '.yml', '.java', '.cs', '.c', '.h', '.cpp', '.xml', '.go', '.py' ]
var LINES = 0
var findFolder = function(srcDir, cb) {
 fs.readdir(srcDir, function(err, files) {
 var count = 0
 var checkEnd = function() {
 ++count == files.length && cb && cb()
 }
 if (err) {
 checkEnd()
 return
 }
 files.forEach(function(file) {
 var extname = path.extname(file).toLowerCase()
 var srcPath = path.join(srcDir, file)
 fs.stat(srcPath, function(err, stats) {
 if (stats.isDirectory()) {
 findFolder(srcPath, checkEnd)
 } else {
 if (codesFiles.indexOf(extname) < 0) {
 checkEnd()
 return
 }
 fs.readFile(srcPath, function(err, data) {
 if (err) {
 checkEnd()
 return
 }
 var lines = data.toString().split('\n')
 LINES += lines.length
 console.log(srcPath, lines.length)
 checkEnd()
 })
 }
 })
 })
 //為空時直接回調
 files.length === 0 && cb && cb()
 })
}
findFolder('./', function() {
 console.log('LINES:', LINES)
})

使用時將此腳本文件命名為lines.js,然后復制到需要統(tǒng)計的文件夾下,然后執(zhí)行

node lines.js

然后會統(tǒng)計每一個代碼文件的長度,和代碼總行數:

$ node lines.js
lines.js 56
package.json 6
local\en-US.js 122
local\FE.zh-CN.js 306
...
LINES: 40464

更新

下面的腳本通過檢測是否含有ASC0的值來判斷文件是不文本文件,然后統(tǒng)計代碼行數,但實測統(tǒng)計數量明顯偏多。

var path = require('path')
var fs = require('fs')
var LINES = 0
var FILES = 0
//https://github.com/hellosean1025/study/blob/master/function.js
function isTextFile( filepath, length ) {
 fd = fs.openSync( filepath, 'r' );
 length = length || 1000;
 for( var i = 0;i < length;i++ ) {
 buf = new Buffer( 1 );
 var bytes = fs.readSync( fd, buf, 0, 1, i );
 char = buf.toString().charCodeAt();
 if ( bytes === 0) {
 return true;
 } else if(bytes === 1 && char === 0) {
 return false;
 }
 }
 return true;
}
var findFolder = function(srcDir, cb) {
 fs.readdir(srcDir, function(err, files) {
 var count = 0
 var checkEnd = function() {
 ++count == files.length && cb && cb()
 }
 if (err) {
 checkEnd()
 return
 }
 files.forEach(function(file) {
 var extname = path.extname(file).toLowerCase()
 var srcPath = path.join(srcDir, file)
 fs.stat(srcPath, function(err, stats) {
 if (stats.isDirectory()) {
 findFolder(srcPath, checkEnd)
 } else {
 // if (codesFiles.indexOf(extname) < 0) {
 // checkEnd()
 // return
 // }
 if (!isTextFile(srcPath)) {
 checkEnd()
 return
 }
 fs.readFile(srcPath, function(err, data) {
 if (err) {
 checkEnd()
 return
 }
 var lines = data.toString().split('\n')
 LINES += lines.length
 if (lines.length > 5000) {
 console.trace(srcPath, lines.length) 
 } else {
 console.log(srcPath, lines.length)
 }
 FILES++
 checkEnd()
 })
 }
 })
 })
 //為空時直接回調
 files.length === 0 && cb && cb()
 })
}
findFolder('./', function() {
 console.log('LINES:', LINES)
 console.log('FILES:', FILES)
})

總結

以上所述是小編給大家介紹的Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數

Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數:使用Node.JS的大多數用記事本開發(fā),有時侯會需要統(tǒng)計工程代碼量,然后記事本大部分沒有這個功能。其實用node.js幾行代碼就可以實現(xiàn)。 var path = require('path') var fs = require('fs') //需要統(tǒng)計的文件類型,可自己刪減,均小寫 var codes
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产欧美综合一区二区 | 一级一级特黄女人精品毛片视频 | 欧美日韩精品在线视频 | 国产精品电影一区二区三区 | 欧美一区二区三区视频在线 | 日韩欧美国产综合 | 色就是色欧美色图 | 国产成人一区二区小说 | 欧美aⅴ在线 | 亚洲欧洲精品成人久久曰影片 | 精品国产一区二区三区19 | 综合伊人久久在一二三区 | 亚洲日韩欧美视频 | 精品国产一级在线观看 | 九九热国产 | 欧美理论电影在线观看 | 国产高清免费在线观看 | 91精品国产品国语在线不卡 | 日韩 国产 欧美 | 在线观看免费精品国产 | 色精品一区二区三区 | 亚洲欧美日韩高清一区二区三区 | 国产成人+综合亚洲+天堂 | 久久2| 国产精品一页 | 国产精品久久久久毛片 | 国产视频观看 | 欧美日韩一区二区三区在线观看 | a毛片免费视频 | 在线观看精品一区 | 亚洲视频在线观看 | 久久精品视频一区二区三区 | 一级毛片特黄久久免费看 | 在线免费观看一区二区三区 | 在线免费观看国产精品 | 韩日视频在线观看 | 午夜在线免费视频 | 99视频九九精品视频在线观看 | 一级毛片在线全部免费播放 | 欧美亚洲免费 | 欧美成人精品欧美一级乱黄 |