/** Archivo que realiza el reemplazo de librerias y/o modulos. Es necesario tomar en cuenta lo siguiente: - Directorio: ./parches Almacena los recursos necesarios para el parche, en subdirectorios. - Archivo: ./parches/parchar.js Se encarga de realizar el parche. - Archivo: ./parches/config.parchar.json Contiene informacion sobre el origen del parche y el destino del mismo. PD.: El parche se realiza de carpeta a carpeta, es decir: Si el parche va para ./node_modules/sequelize-handlers/handlers/create.js El directorio origen que debe contener a "create.js" es: ./parches/handlers En el archivo de configuracion: parches:[ { "ruta_origen":"handlers", "ruta_destino":"node_modules/sequelize-handlers/handlers" }, ] */ const fs = require('fs'); const path = require('path'); const basename=path.basename(module.filename); const rutaParches=`${__dirname}`; const configuracion=require(`./config.parchar.json`); // Itera y verifica la existencia del directorio. configuracion.parches.forEach((parche)=>{ // Verifica la existencia del directorio destino. fs.exists(parche.ruta_destino,(resultadoLectura)=>{ console.log("verificando la existencia de la ruta destino >>>> "+parche.ruta_destino, resultadoLectura); // Si éxiste el directorio. if(resultadoLectura){ // Ruta del archivo origen. var rutaOrigen=rutaParches+"/"+parche.ruta_origen; // Realiza la lectura del directorio origen, al cual le aplica un filtro. fs.readdirSync(rutaOrigen).filter((archivo)=> // Que sea un directorio && que no sea este mismo archivo && que no sea del tipo "json". (archivo.indexOf('.')!==0) && (archivo!==basename) && (archivo.substr(archivo.lastIndexOf('.')+1,archivo.length)!='json') ) // Itera los archivos obtenidos de la ruta origen. .forEach((archivo)=>{ // Realiza la lectura del archivo de origen. fs.readFile(rutaOrigen+"/"+archivo,{flag:"r"},(errorLeer,dataLeer)=>{ // Si no existe error en la lectura. if(!errorLeer){ // Realiza la escritura del archivo destino, con la data obtenida en la lectura. fs.writeFile(parche.ruta_destino+"/"+archivo,dataLeer,{flag:'w'},(errorEscritura)=>{ // Si no existe error de escritura. if(!errorEscritura) console.log("Archivo "+archivo+" -- reemplazado correctamente "); else console.log("Archivo "+archivo+" -- Error en el remplazo.", errorEscritura); }); } // Si existe error en la lectura. else{ console.log("Error en la lectura del archivo >> "+archivo); } }); }); } // Si no existe el directorio destino. else{ console.log("La ruta destino no existe. <<< "+parche.ruta_destino+" >>>"); } }) })