用nodejs实现软著源代码的复制粘贴

606 阅读2分钟

需求背景:
公司为已做好的项目申请软件著作权,需要将粘贴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中

结果:花了一个上午的时间,趟过几个弯路之后,就顺利地将工作任务完成了。然后将脚本分享到公司的群里,下次再需要申请软著,就不需要苦逼的复制粘贴了啊。慢慢地喝咖啡刷抖音就行