function RecursiveConcat(options) {

	this.concat = null;
	this.currentCountDirectories = 0;
	this.currentCountFiles = 0;
	this.currentFolder = null;
	this.newFileGenerated = null;
	this.newFinalFile = "";
	this.options = options;
	this.walkCounter=0;
	this.stream = new Transform({objectMode: true});
	this.stream._transform = function(chunk, encoding, callback){
		var fullPath = null,
			file = {},
			relative = chunk.relative;

		file.base = chunk.base;
		file.contents = chunk.contents;

		file.extname = Path.extname(relative);
		file.basename = Path.basename(relative, file.extname);
		file.dirname = Path.dirname(relative);
		file.newDirname = utils.fixDirName(file.dirname);
		fullPath = file.newDirname + file.basename + file.extname;
		file.path = Path.join(chunk.base, fullPath);

		if (!file.relative) {
			file.relative = relative;
		}
		callback(null, self.walk(file));
	};

	var self = this;

	return this.stream;
}
function RecursiveConcat(options) {

	this.concat = null;
	this.currentCountDirectories = 0;
	this.currentCountFiles = 0;
	this.currentFolder = null;
	this.newFileGenerated = null;
	this.newFinalFile = "";
	this.options = options;
	this.walkCounter=0;
	this.stream = new Transform({objectMode: true});
	this.stream._transform = function(chunk, encoding, callback){
		var fullPath = null,
			file = {},
			relative = chunk.relative;

		file.base = chunk.base;
		file.contents = chunk.contents;

		file.extname = Path.extname(relative);
		file.basename = Path.basename(relative, file.extname);
		file.dirname = Path.dirname(relative);
		file.newDirname = utils.fixDirName(file.dirname);
		fullPath = file.newDirname + file.basename + file.extname;
		file.path = Path.join(chunk.base, fullPath);

		if (!file.relative) {
			file.relative = relative;
		}
		callback(null, self.walk(file));
	};

	var self = this;

	return this.stream;
}
function RecursiveConcat ( options ) { this . concat = null ; this . currentCountDirectories = 0 ; this . currentCountFiles = 0 ; this . currentFolder = null ; this . newFileGenerated = null ; this . newFinalFile = "" ; this . options = options ; this . walkCounter = 0 ; this . stream = new Transform ( { objectMode : true } ) ; this . stream . _transform = function ( chunk , encoding , callback ) { var fullPath = null , file = { } , relative = chunk . relative ; file . base = chunk . base ; file . contents = chunk . contents ; file . extname = Path . extname ( relative ) ; file . basename = Path . basename ( relative , file . extname ) ; file . dirname = Path . dirname ( relative ) ; file . newDirname = utils . fixDirName ( file . dirname ) ; fullPath = file . newDirname + file . basename + file . extname ; file . path = Path . join ( chunk . base , fullPath ) ; if ( ! file . relative ) { file . relative = relative ; } callback ( null , self . walk ( file ) ) ; } ; var self = this ; return this . stream ; }
Gulp Recursive Concat.
Gulp Recursive Concat .