uni-app 查看每一行代码的最后修改时间和修改人
uni-app 查看每一行代码的最后修改时间和修改人
可以查看git每一行代码的最后修改时间和修改人。
2 回复
插件市场有一些,你看下哪个能满足你的需求
https://ext.dcloud.net.cn/search?q=git&cat1=1&cat2=11
在uni-app项目中,直接查看每一行代码的最后修改时间和修改人并不是内置的功能。这种需求通常涉及版本控制系统(如Git)的集成和代码分析工具的使用。以下是一个使用Git和Node.js脚本结合的方式,来提取每一行代码的最后修改时间和修改人的示例。
步骤1:确保你的项目使用Git管理
首先,确保你的uni-app项目已经使用Git进行版本控制。如果没有,请初始化一个Git仓库:
git init
步骤2:使用Git Blame获取修改信息
Git提供了git blame
命令,可以显示文件中每一行代码的最后一次修改信息,包括修改人和修改时间。
步骤3:编写Node.js脚本来解析Git Blame输出
下面是一个简单的Node.js脚本示例,它遍历项目中的所有文件,并使用git blame
获取每一行代码的修改信息。
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const rootDir = path.join(__dirname, 'your-uni-app-project'); // 替换为你的uni-app项目目录
function getBlameInfo(filePath) {
const result = execSync(`git blame --porcelain ${filePath}`).toString().split('\n');
const linesInfo = [];
for (let i = 1; i < result.length; i++) {
const line = result[i];
const [hash, originalLine, lineNumber, author, time, rest] = line.split('\t');
linesInfo.push({
lineNumber: parseInt(lineNumber, 10),
author,
time: new Date(parseInt(time, 10) * 1000), // Git时间戳是秒级,JavaScript Date是毫秒级
content: rest.trim()
});
}
return linesInfo;
}
function traverseDir(dir) {
const files = fs.readdirSync(dir);
files.forEach(file => {
const fullPath = path.join(dir, file);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
traverseDir(fullPath);
} else if (stat.isFile() && fullPath.endsWith('.vue') || fullPath.endsWith('.js')) { // 根据需要添加文件类型
const blameInfo = getBlameInfo(fullPath);
console.log(`File: ${fullPath}`);
blameInfo.forEach(info => {
console.log(`Line ${info.lineNumber}: Author - ${info.author}, Time - ${info.time}`);
});
}
});
}
traverseDir(rootDir);
说明
- 脚本逻辑:该脚本遍历指定目录(uni-app项目根目录),对符合条件的文件(如
.vue
和.js
文件)执行git blame
命令,并解析输出。 - 时间转换:Git的时间戳是秒级的,而JavaScript的
Date
对象是毫秒级的,因此需要进行转换。 - 扩展性:你可以根据需要扩展该脚本,例如添加更多的文件类型或格式化输出。
通过这种方式,你可以查看uni-app项目中每一行代码的最后修改时间和修改人。