批量给项目中的所有文件添加文件头


背景

接到一个需求:未防止代码泄漏后快速排查,要给现有的项目添加文件头。当前项目文件上千个,所以不能一个一个加,为此写了个node脚本,记录一下。

1. 为现有文件添加文件头

const path = require('path');
const git = require('simple-git')(path.resolve(__dirname, './src'));
const fs=require("fs")
let author,latestAuthor,date, latestDate;
let str = (path.resolve(__dirname, './src')); // 此处只处理src下的相关文件

function getData(str) {
	// 读取文件夹
    fs.readdir(str, (err1, res1) => {
        if(err1) {
            console.log('err1', err1);
        } else {
            console.log('res1', res1);
            res1.forEach((file) => {
                let str2 = str +'/' +file;
                // 判断是是否为文件
                fs.stat(str2, (err2, res2) => {
                    if(err2) {
                        console.log(err2);
                    } else {
                        let flag = res2.isFile();
                        if(flag){
                            console.log(res2);
                            let aa = file.split('.')[1];
                            if(['js','css','less','vue'].includes(aa)){
                            // 读取文件内容
                                fs.readFile(str2, (err3, res3) => {
                                    if(err3){
                                        console.log(err3);
                                    }else {
                                       let ss = res3.toString();
                                       let tt='';
                                       // 获取git相关信息
                                       git .log({file:str2}, (err4, data) => {
                                           if(err4){
                                               console.log(err4);
                                           } else {
                                            //    console.log(data, str2)
                                               if(data.all.length) {
                                                author = data.all.at(-1).author_email ;
                                                date = data.all.at(-1).date;
                                                latestAuthor = data.latest.author_email;
                                                latestDate = data.latest.date;
                                                console.log(author, latestAuthor,date,latestDate);

                                                if(aa === 'vue') {
                                                    tt =
 `
<!--
* @项目名称: xxx
* @FilePath: ${str2.split('工作目录/')[1]}
* @Author: ${author}
* @Date: ${date}
* @LastEditors: ${latestAuthor}
* @LastEditTime: ${latestDate}
* Copyright (c) 2018-2022 xxx)科技股份有限公司 All rights reserved.*注意:本内容仅限于xxx内部传阅,禁止外泄以及用于其他的商业目的

-->

`   
                                                } else {
                                                    tt = 
`
/**
* @项目名称: xxx
* @FilePath: ${str2.split('工作目录/')[1]}
* @Author: ${author}
* @Date: ${date}
* @LastEditors: ${latestAuthor}
* @LastEditTime: ${latestDate}
* Copyright (c) 2018-2022 xxx)科技股份有限公司 All rights reserved.*注意:本内容仅限于xxx内部传阅,禁止外泄以及用于其他的商业目的
*/
                                                    
`                                                    
                                                }
                                                let content = tt + ss;
                                                // 写入文件
                                                fs.writeFile(str2, content, (err5, res5) => {
                                                    if(err5){
                                                      console.log(err5)
                                                    } else {
                                                      console.log(res5)
                                                    }
                                                  })

                                               }
                                               

                                           }
                                       })
                                    }
                                })
                            }

                        } else{
                        	// 若为文件夹递归调用
                            getData(str2);
                        }
                    }
                })
            })
        }
    })
}
getData(str);

2. koroFileHeader插件自动生成文件头

在这里插入图片描述

  • User Settings(用户设置) - Settings that apply globally to any instance of VS Code you open.(用户区,即全局,关联于用户。在某个用户下打开任意vscode界面都会用此配置,即应用于该用户打开的所有工程)

    1. ctel+,打开设置,在设置中搜索fileheader
      在这里插入图片描述

    2. 配置相关内容

      "fileheader.customMade": {
      		    "项目名称":"xxxx",
      		    "FilePath": "Do not edit",
      		    "Author": "lili",
      		    "Date": "Do not edit",
      		    "LastEditors": "lili",
      		    "LastEditTime": "Do not Edit",
      		    "custom_string_obkoro1_copyright": "Copyright © 2018-${now_year} 
      		  }
      

      更多配置项可以查看koro1FileHeader官网

  • Workspace Settings (工作区设置)- Settings stored inside your workspace and only apply when the workspace is opened.(工作区设置是指使用vscode打开某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹,文档位置为根目录/.vscode/setting.json(可自己创建,也可不创建),里面包含着仅适用于当前目录的vscode的设置,工作区的设置会覆盖用户设置)

    command+shit+p,
    在这里插入图片描述
    打开工作区配置,配置方法和用户设置相同

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值