Вот мой код целиком
var fs = require('fs')
,path = require('path')
,jimp = require('jimp')
// Настройки
var dir = "sources/products",
replaceDirPath= "",
replaceDir = "./products/";
// Название папок и размеры картинок
var settings = {
'400x400':'400, 400' //КАРТОЧКА ТОВАРА: Основная фотография
,'80x80':'80, 80' //КАРТОЧКА ТОВАРА: сопутсвующий товар
,'200x200':'200, 200' //КАРТОЧКА ТОВАРА: хит продаж
,'120x120':'120, 120' //КАТЕГОРИИ: может пригодиться
,'265x265':'265, 265' //КАТЕГОРИИ: Фото позици
,'190x190':'190, 190' //КАТЕГОРИИ: хит продаж
,'175x175':'175, 175' //ОБЩИЕ: просмотренные
};
// Обработка картинок-файлов
function renderImg(dest, target){
jimp.read(dest, (err, img) => {
if (err) throw err;
img
//.resize() // resize
//.quality(60) // set JPEG quality
//.greyscale()
.write(target); // save
});
}
function walkSync (dir, filelist = []) {
fs.readdirSync(dir).forEach(file => {
const dirFile = path.join(dir, file);
for(value in settings){
if(!fs.existsSync("./products/" + value + "/")){
fs.mkdirSync("./products/" + value + "/");
}
replaceDirPath = dir.replace("sources\\products\\", replaceDir + value + "/");
if(!fs.existsSync(replaceDirPath)){
fs.mkdirSync(replaceDirPath);
}
}
try {
filelist = walkSync(dirFile, filelist);
}
catch (err) {
if (err.code === 'ENOTDIR' || err.code === 'EBUSY') filelist = [...filelist, dirFile];
else throw err;
}
});
return filelist;
}
var list = walkSync(dir);
//Цикл обработки и размещения файлов
list.forEach(function (v) {
var dest = v;
for(value in settings){
var target = v.replace("sources\\products\\", replaceDir + value + "\\");
renderImg(dest, target);
// fs.copyFile(dest, target, 0,(err)=>{
// if(err) console.log(err);
// });
}
});