nodejs 批量将js文件替换成jsx文件

var fs = require('fs');
var path = require('path');
var filePath = path.resolve(process.cwd(), 'src/pages/Crm');
 
//调用文件遍历方法
fileDisplay(filePath);
 
/**
 * 文件遍历方法
 * @param filePath 需要遍历的文件路径
 */
function fileDisplay(filePath){
//   console.log(8977)
    //根据文件路径读取文件,返回文件列表
    fs.readdir(filePath,function(err,files){
      console.log(files, 'files');
        if(err){
            console.warn(err)
        }else{
            //遍历读取到的文件列表
            files.forEach(function(filename){
                //获取当前文件的绝对路径
                var filedir = path.join(filePath,filename);
                //根据文件路径获取文件信息,返回一个fs.Stats对象
                fs.stat(filedir,function(eror,stats){
                    if(eror){
                        console.warn('获取文件stats失败');
                    }else{
                        var isFile = stats.isFile();// 是文件
                        var isDir = stats.isDirectory();// 是文件夹
                        if(isFile){
                            //这里请根据需要替换后缀名,我的是要把.js替换成.jsx
                            if(filedir.includes('.js')){
                              const content = fs.readFileSync(filedir) // 读取内容
                              if (/import React/.test(content)) {
                                rename(filedir, filedir.replace('.js', '.jsx'))
                              }
                            }
                        }
                        if(isDir){
                            fileDisplay(filedir);// 递归,如果是文件夹,就继续遍历该文件夹下面的文件
                        }
                    }
                })
            });
        }
    });
}
 
 
 
// 修改文件名称
function rename (oldPath, newPath) {
    fs.rename(oldPath, newPath, function(err) {
        if (err) {
            throw err;
        }
    });
}
原文地址:https://www.cnblogs.com/yxfboke/p/14350607.html