在 uni-app
项目中统计代码行数(包括注释行数)可以通过编写一个简单的脚本实现。以下是一个使用 Node.js 的示例脚本,它可以递归遍历项目目录中的所有 .vue
和 .js
文件,并统计总代码行数和注释行数。
首先,确保你已经安装了 Node.js。然后,你可以创建一个名为 countLines.js
的文件,并将以下代码粘贴进去:
const fs = require('fs');
const path = require('path');
// 忽略的目录和文件
const ignoreDirs = ['.git', 'node_modules'];
const ignoreFiles = ['.DS_Store'];
// 获取文件中的所有行
function getFileLines(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');
return lines;
}
// 判断是否为注释行
function isCommentLine(line) {
return line.trim().startsWith('//') || line.trim().startsWith('/*') || line.trim().endsWith('*/');
}
// 遍历目录
function traverseDir(dir) {
const files = fs.readdirSync(dir);
files.forEach(file => {
const fullPath = path.join(dir, file);
const stats = fs.statSync(fullPath);
if (stats.isDirectory()) {
if (!ignoreDirs.includes(file)) {
traverseDir(fullPath);
}
} else if (stats.isFile() && (path.extname(file) === '.vue' || path.extname(file) === '.js') && !ignoreFiles.includes(file)) {
const lines = getFileLines(fullPath);
let totalLines = 0;
let commentLines = 0;
lines.forEach(line => {
totalLines++;
if (isCommentLine(line)) {
commentLines++;
}
});
console.log(`${fullPath}: 总行数 = ${totalLines}, 注释行数 = ${commentLines}`);
}
});
}
// 从项目根目录开始遍历
const projectRoot = path.join(__dirname, '..'); // 假设脚本在项目根目录的上一级
traverseDir(projectRoot);
使用方法
- 将上述脚本保存为
countLines.js
文件。
- 确保
countLines.js
文件位于你的 uni-app
项目根目录的上一级目录(或根据需要调整 projectRoot
路径)。
- 在终端中运行
node countLines.js
。
这个脚本会遍历指定目录中的所有 .vue
和 .js
文件,并输出每个文件的总行数和注释行数。注意,这个脚本假设注释行仅包括单行注释(//
)和多行注释(/* ... */
),并且注释行不会嵌套。对于更复杂的注释处理,可能需要使用更高级的解析器。