Skip to content

Instantly share code, notes, and snippets.

@miparnisari
Created October 4, 2016 13:02
Show Gist options
  • Save miparnisari/96ee766d0c200459e7edd05b0b73885c to your computer and use it in GitHub Desktop.
Save miparnisari/96ee766d0c200459e7edd05b0b73885c to your computer and use it in GitHub Desktop.
Gulpfile
"use strict";
var gulp = require('gulp');
var autoprefixer = require('gulp-autoprefixer');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var less = require('gulp-less');
var sourcemaps = require('gulp-sourcemaps');
var debug = require('gulp-debug');
var cache = require('gulp-cache');
var imagemin = require('gulp-imagemin');
var browserSync = require('browser-sync');
var nodemon = require('gulp-nodemon');
var clean = require('gulp-clean');
var path = require('path');
var childProcess = require('child_process');
var paths = {
entrypoint: './index.js',
src: './public',
dest: {
main: './dist',
js: './dist/scripts',
css: './dist/stylesheets',
img: './dist/images',
docs: './dist/docs'
}
};
gulp.task('styles', function () {
return gulp.src(paths.src + '/less/main.less')
.pipe(less({
paths: [path.join(__dirname, 'less', 'includes')]
}))
.pipe(gulp.dest(paths.dest.css))
.pipe(autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
.pipe(debug({
title: '*.less files changed:'
}))
.pipe(browserSync.reload({ stream: true }))
.pipe(gulp.dest(paths.dest.css));
});
gulp.task('scripts', function () {
return gulp.src([
paths.src + '/js/**/*.js'
])
.pipe(sourcemaps.init())
.pipe(concat('main.min.js'))
.pipe(gulp.dest(paths.dest.js))
.pipe(debug({
title: 'javascript processed:'
}))
.pipe(uglify().on('error', console.log))
.pipe(sourcemaps.write())
.pipe(browserSync.reload({ stream: true }))
.pipe(gulp.dest(paths.dest.js));
});
gulp.task('watch', function () {
// Watch .less and .css files
gulp.watch([
paths.src + '/less/**/*.less',
paths.src + '/css/**/*.css',
], ['styles']);
// Watch .js files
gulp.watch([
paths.src + '/js/**/*.js',
], ['scripts']);
});
gulp.task('copy-files', function (done) {
gulp
.src([paths.src + '/favicon.ico'])
.pipe(gulp.dest(paths.dest.main));
gulp
.src(paths.src + '/docs/**/*')
.pipe(gulp.dest(paths.dest.main + '/docs'));
gulp
.src(paths.src + '/bower_components/**/*')
.pipe(gulp.dest(paths.dest.main + '/bower_components'));
done();
});
gulp.task('copy-img', function () {
return gulp.src([
paths.src + '/images/**/*.png',
paths.src + '/images/**/*.jpg',
paths.src + '/images/**/*.gif'
])
.pipe(cache(imagemin({
optimizationLevel: 3,
progressive: true,
interlaced: true
})))
.pipe(debug({
title: 'images processed:'
}))
.pipe(gulp.dest(paths.dest.img));
});
gulp.task('build', ['styles', 'scripts', 'copy-files', 'copy-img'], function () {
});
gulp.task('nodemon', function (done) {
nodemon({
script: './index.js',
watch: [paths.dest.main],
env: { 'NODE_ENV': 'development' },
stdout: false // <-- important, otherwise output won't get piped properly
})
.on('readable', function () {
// Pass output through bunyan formatter
var bunyan = childProcess.fork(
path.join('.', 'node_modules', 'bunyan', 'bin', 'bunyan'),
['-o', 'short'],// CLI optins
{silent: true}
);
bunyan.stdout.pipe(process.stdout);
bunyan.stderr.pipe(process.stderr);
this.stdout.pipe(bunyan.stdin);
this.stderr.pipe(bunyan.stdin);
});
done();
});
gulp.task('browser-sync', ['nodemon'], function () {
browserSync.init(null, {
proxy: 'http://localhost:3008'
});
});
gulp.task('default', ['build', 'watch', 'browser-sync'], function () {
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment