需求背景:
公司为已做好的项目申请软件著作权,需要将粘贴50页源代码到word文档中。
实现过程:
手动从VSCode复制、粘贴源代码到word。
遇到的问题:
1.复制粘贴的源代码带有格式(黑色背景,文本颜色),每次粘贴完后,需要手动关闭格式化。
2.上面的过程需要复制几十次,需要软著越多,次数越多
3.太无聊
4.没技术含量,不符合程序员的逼格
解决思路:
用程序递归读取文件夹中的文件,复制粘贴到另外一个文件中。
解决方法:
环境:nodejs
语言:JavaScript
node的API:
fs.readdirSync:同步读取文件夹
fs.statSync:判断文件类型
fs.readFileSync:同步读取文件
fs.appendFileSync:同步拼接文件
// nodejs 递归遍历文件夹
const fs = require('fs')
const path = require('path')
const source = process.argv[2]
const target = process.argv[3]
function deep(dir, list) {
const arr = fs.readdirSync(path.join(__dirname, dir))
arr.forEach(item => {
const child = []
list.push({ name: item, child})
const itemPath = path.join(__dirname, dir + '/' + item)
const isDir = fs.statSync(itemPath).isDirectory()
if (isDir) {
const temp = dir + item + '/'
deep(temp, child)
} else {
const filePath = dir + '/' + item
const content = fs.readFileSync(itemPath, 'utf8')
console.log(content)
try {
const data = fs.appendFileSync(target, content)
//文件写入成功。
} catch (err) {
console.error(err)
}
}
})
}
let list = []
deep(source, list)
console.log(JSON.stringify(list))
使用方式:
node codePaste.js ‘source folder relative path’ ‘target file relative path’
使用示例:
node codePaste.js ./client/pc-app/src/app/routes/config/ ./codeAuth.txt
过程中走的弯路:
1.开始考虑的是使用bash的cp命令。结果发现cp是直接对文件进行复制,不符合要求
总结:API不熟悉。改成使用nodejs
2.将文件直接写入word文档。结果出现格式错乱的问题。
总结:不了解word的格式。改成使用txt为写入格式,然后复制粘贴到word中