Also fixes gulpfile: - `runSequence` needs to be called with `done` callback - `es5build` should only run when the task executes…
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env node
 | |
| 
 | |
| // Attention: This file will be distributed with our npm packages!
 | |
| var gulp = require('gulp');
 | |
| var traceur = require('gulp-traceur');
 | |
| var rename = require('gulp-rename');
 | |
| var sourcemaps = require('gulp-sourcemaps');
 | |
| var through2 = require('through2');
 | |
| var fs = require('fs');
 | |
| var path = require('path');
 | |
| 
 | |
| module.exports = run;
 | |
| 
 | |
| if (!module.parent) {
 | |
|   var argv = require('yargs')
 | |
|       .usage('Transpile to es5.\n\n'+
 | |
|         'Usage: $0 -m [format] -s [folder] -d [folder]')
 | |
|       .example('$0 -d tmp', 'transpile in `instantate` format to tmp/')
 | |
|       .options({
 | |
|         's': {
 | |
|           alias: 'source',
 | |
|           describe: 'source folder',
 | |
|           default: '.'
 | |
|         },
 | |
|         'd': {
 | |
|           alias: 'dest',
 | |
|           describe: 'output folder',
 | |
|           demand: true
 | |
|         },
 | |
|         'm': {
 | |
|           alias: 'modules',
 | |
|           describe: 'module format, https://github.com/google/traceur-compiler/wiki/Options-for-Compiling',
 | |
|           default: 'instantiate'
 | |
|         }
 | |
|       })
 | |
|       .help('help')
 | |
|       .wrap(40)
 | |
|       .strict()
 | |
|       .argv
 | |
|   ;
 | |
|   run({
 | |
|     src: argv.s,
 | |
|     dest: argv.d,
 | |
|     modules: argv.m
 | |
|   });
 | |
| }
 | |
| 
 | |
| function run(config) {
 | |
|   var src = ['!node_modules', '!node_modules/**', './**/*.es6'];
 | |
|   return gulp.src(src, {cwd: config.src})
 | |
|     .pipe(rename(function(file) {
 | |
|       file.extname = file.extname.replace('.es6', '.js');
 | |
|     }))
 | |
|     // TODO(tbosch): Using sourcemaps.init({loadMaps:true}) does not combine
 | |
|     // the sourcemaps correctly!
 | |
|     .pipe(sourcemaps.init())
 | |
|     .pipe(through2.obj(function(file, encoding, done) {
 | |
|       var self = this;
 | |
|       fs.readFile(file.path.replace('.js', '.map'), function(error, buffer) {
 | |
|         if (error) {
 | |
|           return done(error);
 | |
|         }
 | |
|         file.sourceMap = JSON.parse(buffer.toString());
 | |
|         // The filename needs to be the same as the one that is transpiled
 | |
|         // so that gulp-sourcemaps can update the mapping
 | |
|         file.sourceMap.file = file.relative;
 | |
|         file.sourceMap.sourceRoot = path.dirname(file.relative);
 | |
|         self.push(file);
 | |
|         done();
 | |
|       });
 | |
|     }))
 | |
|     .pipe(traceur({
 | |
|       modules: config.modules,
 | |
|       sourceMaps: true
 | |
|     }))
 | |
|     .pipe(sourcemaps.write('.'))
 | |
|     .pipe(gulp.dest(config.dest));
 | |
| };
 |