UNPKG

gulp-lazy-pipelines

Version:

gulp lazy pipelines for frontend development

94 lines (81 loc) 2.69 kB
const gulp = require('gulp'); const gutil = require('gulp-util'); const buffer = require('gulp-buffer'); const tap = require('gulp-tap'); const babel = require('gulp-babel'); const sourcemaps = require('gulp-sourcemaps'); const concat = require('gulp-concat'); const process = require('process'); const mocha = require('gulp-mocha'); function handleError(err) { gutil.log(gutil.colors.red(err.toString())); this.emit('end'); } function getBuildPipeline(src, name, presets, plugins) { presets = typeof(presets) === 'string' ? [presets] : presets; return gulp.src(src) .pipe(sourcemaps.init()) .pipe(babel({ presets: presets, plugins: plugins })) .pipe(concat(name)) .pipe(sourcemaps.write('.')); } function getDeployPipeline(src, name, presets, plugins) { presets = typeof(presets) === 'string' ? [presets] : presets; return gulp.src(src) .pipe(babel({ presets: presets, plugins: plugins })) .pipe(concat(name)); } // Get global parameters before executing tasks. const PARAMS = (function (){ let params = {}; // Get node major and minor version as a decimal number: major.minor params.nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]); gutil.log('Node version' ,gutil.colors.blue(params.nodeVersion) ,'is detected'); if (params.nodeVersion >= 6.0) { params.preset = 'es2015-node6'; } else if(params.nodeVersion < 6.0 && params.nodeVersion >= 5.0) { params.preset = 'latest-node5'; } // Maybe not work with 0.x versions running on some really old servers else if(params.nodeVersion < 5.0) { params.preset = 'es2015-node4'; params.plugins = 'transform-regenerator'; } gutil.log('Using babel preset:' ,gutil.colors.blue(params.preset) ,'plugins are' , gutil.colors.blue(params.plugins)); return params; }()); /*---------- TASKS ----------*/ gulp.task('build', function buildTask() { return getBuildPipeline('./src/index.js', 'index.js', PARAMS.preset, PARAMS.plugins) .pipe(gulp.dest('./out')); }); gulp.task('deploy', function deployTask() { return getDeployPipeline('./src/index.js', 'index.js', PARAMS.preset, PARAMS.plugins) .pipe(gulp.dest('./dist')); }); gulp.task('build-test', function buildTestTask() { return getBuildPipeline('./test/test.js', 'test.js', PARAMS.preset, PARAMS.plugins) .pipe(gulp.dest('./out_test')); }); gulp.task('test', ['build', 'build-test'], function testTask() { let src = PARAMS.nodeVersion >= 6 ? 'test/test.js' : 'out_test/test.js'; return gulp.src(src) .pipe(mocha()) .on('error', handleError); }); gulp.task('default', ['watch']); gulp.task('watch', function watchTask() { gulp.watch(['src/**/*.js', 'test/**/*.js'], ['test']); });