Как сократить время разбора jscodeshift

У меня есть очень большой скомпилированный файл (без расширения), который содержит почти 4 200000 строк кода. Этот файл содержит весь js-код моего проекта с некоторыми дополнительными параметрами. Теперь я хочу обновить скомпилированный файл после изменения исходного файла.

Имя моего исходного файла sourceFile.js выглядит так:

define(['abc'],function(abc){
   //doSomething here
});

Мой скомпилированный файл выглядит так: compiledJS.js:

define('sourceFile',['abc'],function(abc){
         //doSomething here
});
define('sourceFile2',['abc'],function(abc){
             //doSomething here
});
define('sourceFile3',['abc'],function(abc){
             //doSomething here
});

Я нашел способ обновить скомпилированный файл, но он работает очень медленно, т.е. для внесения изменений требуется более 3 минут. Мой код такой:

var j = require("jscodeshift");
var fs= require('fs');

var appRoorDir = "D:\\codemod\\";
const compiledFile=appRoorDir+'compiledJS.js';
const sourceFile=appRoorDir+'sourceFile.js';

function readFiles(path) {
    let content;
    content = fs.readFileSync(path)
    fs.close(0)
    return content;
}

var compiledFileContent = readFiles(compiledFile).toString();

//getting content of source file
var itemToPaste = compiledFileContent.find(j.CallExpression).forEach(path=>{
        if(path.value.callee.name==="define"){
          return j(path.value.arguments[1]).find(j.FunctionExpression).toSource()
        }
  })

var sourceFile = readFiles(compiledFile).toString()

var astSourceFile = j(sourceFile);

//setting content of source file to compiled file
var astCompiledFile=j(compiledFileContent)
astCompiledFile.find(j.CallExpression).forEach(path=>{
    if(path.value.callee.name==="define" && j(path.value.arguments[0]).toSource()==='sourceFile'){
        j(path.value.arguments[1]).replaceWith(itemToPaste);
    }
  })

0 ответов

Другие вопросы по тегам