gulp-lazy-pipelines
Version:
gulp lazy pipelines for frontend development
94 lines (81 loc) • 2.69 kB
JavaScript
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']);
});