gulp-lazy-pipelines
Version:
gulp lazy pipelines for frontend development
77 lines (66 loc) • 1.9 kB
JavaScript
const gulp = require('gulp');
const gutil = require('gulp-util');
const tap = require('gulp-tap');
const sourcemaps = require('gulp-sourcemaps');
const buffer = require('gulp-buffer');
const lazypipe = require('lazypipe');
const uglify = require('gulp-uglify');
const rename = require('gulp-rename');
const gif = require('gulp-if');
const browserify = require('browserify');
const stylus = require('gulp-stylus');
const postcss = require('gulp-postcss');
const autoprefixer = require('autoprefixer');
const pug = require('gulp-pug');
const concat = require('gulp-concat');
const babel = require('gulp-babel');
export function buildPipeline(newName, presets='es2015', plugins='') {
presets = typeof(presets) === 'string' ? [presets] : presets;
return lazypipe()
.pipe(sourcemaps.init)
.pipe(babel, {
presets: presets,
plugins: plugins
})
.pipe(concat, newName)
.pipe(sourcemaps.write, '.');
}
export function bundlePipeline(newName, ugly) {
let pipeline = lazypipe()
.pipe(tap, function (file) {
gutil.log('bundling ' + file.path);
file.contents = browserify(file.path, {debug: true}).bundle();
})
.pipe(buffer)
.pipe(sourcemaps.init, {loadMaps: true});
if (newName) {
pipeline = lazypipe()
.pipe(pipeline)
.pipe(rename, newName);
}
pipeline = pipeline = lazypipe()
.pipe(pipeline)
.pipe(sourcemaps.write, './');
return pipeline;
}
export function stylusPipeline(params = {}, newName) {
let pipeline = lazypipe()
.pipe(sourcemaps.init)
.pipe(stylus, params)
.pipe(postcss, [autoprefixer()]);
if (newName) {
pipeline = lazypipe()
.pipe(pipeline)
.pipe(rename, newName);
}
pipeline = lazypipe()
.pipe(pipeline)
.pipe(sourcemaps.write, './');
return pipeline;
}
export function templatePipeline(params = {}) {
return lazypipe()
.pipe(sourcemaps.init)
.pipe(pug, params)
.pipe(sourcemaps.write, './');
}