大家好,又到一年一度的我司申請(qǐng)軟著的時(shí)候了,今年寫(xiě)了一些小工具,分享一下,大家寫(xiě)軟著的時(shí)候興許能用到。
1. 代碼整理
軟著的申請(qǐng)是需要提交一些項(xiàng)目代碼的,最好是60頁(yè),前面最好是項(xiàng)目的啟動(dòng)文件,因此第一頁(yè)我首先會(huì)拷貝項(xiàng)目的 package.json
文件,接下來(lái)拷貝 src/app
下面的文件,那么手動(dòng)拷貝一個(gè)個(gè)文件這種麻煩的事情程序員肯定不會(huì)干的,因此用到了以下這個(gè)文件,可以輸出某個(gè)目錄下的所有文件,并進(jìn)行整理。
另外由于代碼文件中不建議出現(xiàn)空行,因此這里的程序把所有的空行都去掉了。
輸出完文件之后,需要對(duì)文件進(jìn)行檢查,如果文件的內(nèi)容的中文部分對(duì)軟著的申請(qǐng)有歧義的,可以進(jìn)行進(jìn)一步詮釋或者刪除。
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')
.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}`);
輸出格式形如:
非空行內(nèi)容1
非空行內(nèi)容2
console.log('hello');
2. 代碼行數(shù)統(tǒng)計(jì)
那么在軟著的申請(qǐng)表上還需要統(tǒng)計(jì)項(xiàng)目代碼的總行數(shù),像這種麻煩的事情程序員也不會(huì)手動(dòng)干的。
先安裝插件Statistic
,Webstorm/Setting
然后搜索 
點(diǎn)擊statistics
,在這里可以查看到項(xiàng)目代碼的總行數(shù)。

如果需要去掉某些目錄,點(diǎn)擊setting
后可以點(diǎn)擊這里的Add,添加后將不會(huì)進(jìn)行統(tǒng)計(jì)。

后面附上軟著申請(qǐng)的參考文件,有需要的可以看看
軟著編寫(xiě)模板
AlexanderZhou01/China-software-copyright
手把手帶你申請(qǐng)軟著!助你提高通過(guò)率?。。?/a>
前端可以申請(qǐng)軟著嗎?
轉(zhuǎn)自https://juejin.cn/post/7503172559274901544
該文章在 2025/5/13 10:27:26 編輯過(guò)