Alex Eagle d6003ee0ab chore(build): Add traceur transpiler for broccoli.
This exactly reproduces the output tree from one of the gulp tasks, which is now removed.
Next step is to migrate another sibling task to broccoli.
2015-04-07 16:38:02 -07:00

50 lines
1.8 KiB
JavaScript

var util = require('./util');
var file2moduleName = require('./file2modulename');
var through2 = require('through2');
var path = require('path');
var fs = require('fs');
var VinylFile = require('vinyl');
// used for generating html files and bootstrapping benchmarks and examples
module.exports = function(gulp, plugins, config) {
return function() {
return gulp.src(config.src)
.pipe(util.insertSrcFolder(plugins, config.srcFolderInsertion, config.modulesFolder))
.pipe(through2.obj(function(file, enc, done) {
var fileName = file.relative;
var moduleName = file2moduleName(fileName);
var moduleNameWithoutPath = path.basename(moduleName);
var self = this;
var scripts = util.filterByFile(config.scriptsPerFolder, fileName).map(function(script) {
var scriptTag;
var scriptSrc = script.src;
if (script.copy || script.copyOnly) {
scriptSrc = path.basename(script.src);
self.push(new VinylFile({
cwd: file.cwd,
base: file.base,
path: path.join(path.dirname(file.path), scriptSrc),
contents: fs.readFileSync(script.src)
}));
};
if (script.copyOnly) {
return '';
}
if (scriptSrc) {
scriptTag = '<script src="'+scriptSrc+'" type="'+script.mimeType+'"></script>';
} else {
scriptTag = '<script type="'+script.mimeType+'">'+script.inline+'</script>';
}
return scriptTag
.replace('$MODULENAME_WITHOUT_PATH$', moduleNameWithoutPath)
.replace('$MODULENAME$', moduleName)
}).join('\n');
file.contents = new Buffer(file.contents.toString().replace('$SCRIPTS$', scripts));
this.push(file);
done();
}))
.pipe(gulp.dest(config.dest));
};
};