Skip to content

Instantly share code, notes, and snippets.

@tjoskar
Created June 22, 2015 20:42
Show Gist options
  • Save tjoskar/f8b484c9ff45962b2bde to your computer and use it in GitHub Desktop.
Save tjoskar/f8b484c9ff45962b2bde to your computer and use it in GitHub Desktop.
Copy files recursive and replace strings
var fs = require('fs');
var path = require('path');
function copyRecursive(src, dest) {
var copyPromises = [];
var copy = function copy(src, dest) {
var exists = fs.existsSync(src);
var stats = exists && fs.statSync(src);
var isDirectory = exists && stats.isDirectory();
if (exists && isDirectory) {
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest);
}
fs.readdirSync(src).forEach(function(childItemName) {
copy(
path.join(src, childItemName),
path.join(dest, childItemName)
);
});
} else {
copyPromises.push(copyFile(src, dest));
}
};
copy(src, dest);
return Promise.all(copyPromises);
}
function copyFile(source, target) {
return new Promise(function(resolve, reject) {
var readFile = fs.createReadStream(source);
readFile.on('error', reject);
var writeFile = fs.createWriteStream(target);
writeFile.on('error', reject);
writeFile.on('finish', resolve);
readFile.pipe(writeFile);
});
}
function replaceName(file, name, done) {
fs.readFile(file, 'utf8', function (error, data) {
if (error) {
return console.log(error);
}
var result = data.replace(/{{name}}/g, name);
fs.writeFile(file, result, 'utf8', function (err) {
if (err) {
return console.log(err);
} else {
done();
}
});
});
}
copyRecursive('./testfolder/', './yo/')
.then(function() {
replaceName('./yo/doc/t.txt', 'Oskar är bäst', function() {
console.log('Klart');
});
}).catch(function(error) {
console.log(error);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment