大家好,又到一年一度的我司申请软著的时候了,今年写了一些小工具,分享一下,大家写软著的时候兴许能用到。
1. 代码整理
软著的申请是需要提交一些项目代码的,最好是60页,前面最好是项目的启动文件,因此第一页我首先会拷贝项目的 package.json
文件,接下来拷贝 src/app
下面的文件,那么手动拷贝一个个文件这种麻烦的事情程序员肯定不会干的,因此用到了以下这个文件,可以输出某个目录下的所有文件,并进行整理。
另外由于代码文件中不建议出现空行,因此这里的程序把所有的空行都去掉了。
输出完文件之后,需要对文件进行检查,如果文件的内容的中文部分对软著的申请有歧义的,可以进行进一步诠释或者删除。
const fs = require('fs');
const path = require('path');
const sourceDir = path.resolve(__dirname, 'src/pages'); // 替换为你的目标目录
const outputFile = path.resolve(__dirname, 'merged_output.txt');
const projectName = '' // 替换为你的项目名称
// 清空或新建输出文件
fs.writeFileSync(outputFile, '', 'utf-8');
// 递归读取所有文件
function readFilesRecursively(dir) {
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
readFilesRecursively(fullPath);
} else if (entry.isFile()) {
const relativePath = path.relative(__dirname, fullPath);
const content = fs.readFileSync(fullPath, 'utf-8');
const nonEmptyLines = content
.split('\n')
// .map((line) => line.trim())
.filter((line) => line !== '');
// 写入相对路径和内容
fs.appendFileSync(outputFile, `// ${projectName}/${relativePath} \n`, 'utf-8');
fs.appendFileSync(outputFile, nonEmptyLines.join('\n') + '\n', 'utf-8');
console.log(`已合并:${relativePath}`);
}
}
}
readFilesRecursively(sourceDir);
console.log(`✅ 合并完成,输出文件:${outputFile}`);
输出格式形如:
// project-name/your-folder/file1.txt
非空行内容1
非空行内容2
// project-name/your-folder/file1.txt
console.log('hello');
2. 代码行数统计
那么在软著的申请表上还需要统计项目代码的总行数,像这种麻烦的事情程序员也不会手动干的。
先安装插件Statistic
,Webstorm/Setting
然后搜索
点击statistics
,在这里可以查看到项目代码的总行数。
如果需要去掉某些目录,点击setting
后可以点击这里的Add,添加后将不会进行统计。
后面附上软著申请的参考文件,有需要的可以看看