nodejs复制文件夹及其下的所有文件

nodejs复制文件夹及其下的所有文件

背景

假期本想使用nodejs写一个微信小程序转qq小程序的转换工具,写完复制部分之后,发现微信转qq不需要什么操作只需要修改下APPID就行(如果有特殊的部分还是需要进行特殊处理的)。现在把复制的代码放上来,方便大家在针对文件做转换的时候 可以拿来使用。

代码

// An highlighted block
let fs = require("fs");
let path = require("path");
const { exit } = require("process");
let root = "";//源文件目录
// \\miniprogram
let outRoot = "./output";//输出目录
let transRule = {
   ".wxml": ".qml",
   ".wxss": ".qss",
   ".wxs": ".qs",
};
// let dir = fs.readdirSync();
function readDir(dir, outDir, name) {
  let file = path.join(dir, name);
  if (fs.statSync(file).isDirectory()) {
    let outFile = path.join(outDir, name);
    if (name) {
    //创建文件夹
      if (!fs.existsSync(outFile)) {
        fs.mkdirSync(outFile);
        // console.log(outFile);
        // console.log('创建')
      }
    }
    fs.readdirSync(file).forEach((item) => {
      readDir(file, outFile, item);
    });
  } else {
    let outFile = path.join(outDir, name);
    let pathForamte = path.parse(outFile);
    let ext = transRule[pathForamte.ext];
    if (ext) {
      pathForamte.ext = ext;
      pathForamte.base = pathForamte.name + ext;
    }
    let newFilePath = path.format(pathForamte);
    fs.writeFileSync(newFilePath, transferContent(file));
    // console.log(file);
  }
}
//转换文件内容
function transferContent(file) {
  let fileContent = fs.readFileSync(file);
  let pathForamte = path.parse(file);

  if (pathForamte.ext == ".wxml") {
  } else if (pathForamte.ext == ".json") {
    if (pathForamte.base == "project.config.json") {
    //更换APPID
      let content = JSON.parse(fileContent.toString());
      content.qqappid = "";
      delete content.appid
      return JSON.stringify(content)
    }
  }
  return fileContent;
}

readDir(root, outRoot, "");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值