123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- let fs = require('fs')
- let path = require('path')
- // 获取命令行参数
- let parm = process.argv.splice(2)
- // 第一个参数是路径
- let rootPath = parm[0]
- // 后面的所有参数都是文件后缀
- let types = parm.splice(1)
- // 需要过滤的文件夹
- let filter = ['./node_modules']
- // 统计结果
- let num = 0
- // 获取行数
- async function line(path) {
- let rep = await fs.readFileSync(path)
- rep = rep.toString()
- let lines = rep.split('\n')
- console.log(path + ' ' + lines.length)
- num += lines.length
- }
- // 递归所有文件夹统计
- async function start(pt) {
- let files = fs.readdirSync(pt)
- files
- .map(file => {
- return `${pt}/${file}`
- })
- .forEach(file => {
- let stat = fs.statSync(file)
- if (stat.isDirectory()) {
- if (filter.indexOf(pt) != -1) {
- return
- }
- start(file)
- return
- }
- let ext = path.extname(file)
- if (types.indexOf(ext) != -1) {
- line(file)
- }
- })
- }
- ;(async () => {
- await start(rootPath)
- console.log(`总代码行数:${num}`)
- })()
|