#gulp
'use strict';
import gulp from 'gulp';
import plumber from 'gulp-plumber';
import stylus from 'gulp-stylus';
import cssnano from 'gulp-cssnano';
import gcmq from 'gulp-group-css-media-queries';
import sourcemaps from 'gulp-sourcemaps';
import jeet from 'jeet';
import rupture from 'rupture';
import koutoSwiss from 'kouto-swiss';
import prefixer from 'autoprefixer-stylus';
import concat from 'gulp-concat';
import uglify from 'gulp-uglify';
import babel from 'gulp-babel';
import jade from 'gulp-jade';
import imagemin from 'gulp-imagemin';
import browserSync from 'browser-sync';
import ghPages from 'gulp-gh-pages';
const srcPaths = {
js: 'src/js/**/*.js',
css: 'src/styl/**/*.styl',
mainStyl: 'src/styl/main.styl',
jade: 'src/templates/*.jade',
img: 'src/img/**/*',
fonts: 'src/fonts/**/*'
};
const buildPaths = {
build: 'build/**/*',
js: 'build/assets/js/',
css: 'build/assets/css/',
jade: 'build/',
img: 'build/assets/img',
fonts: 'build/assets/fonts'
};
gulp.task('css', () => {
gulp.src(srcPaths.mainStyl)
.pipe(sourcemaps.init())
.pipe(stylus({
use: [koutoSwiss(), prefixer(), jeet(), rupture()],
compress: true
}))
.pipe(gcmq())
.pipe(cssnano())
.pipe(sourcemaps.write())
.pipe(gulp.dest(buildPaths.css));
});
gulp.task('images', () => {
gulp.src(srcPaths.img)
.pipe(plumber())
.pipe(imagemin({
optimizationLevel: 3,
progressive: true,
interlaced: true
}))
.pipe(gulp.dest(buildPaths.img));
});
gulp.task('js', () => {
gulp.src(srcPaths.js)
.pipe(plumber())
.pipe(concat('main.js'))
.pipe(babel({
presets: ['es2015']
}))
.pipe(uglify())
.pipe(gulp.dest(buildPaths.js));
});
gulp.task('jade', () => {
gulp.src(srcPaths.jade)
.pipe(plumber())
.pipe(jade())
.pipe(gulp.dest(buildPaths.jade));
});
gulp.task('images', () => {
gulp.src(srcPaths.img)
.pipe(plumber())
.pipe(imagemin({
optimizationLevel: 3,
progressive: true,
interlaced: true
}))
.pipe(gulp.dest(buildPaths.img));
});
gulp.task('fonts', () => {
gulp.src(srcPaths.fonts)
.pipe(plumber())
.pipe(gulp.dest(buildPaths.fonts));
});
gulp.task('watch', () => {
gulp.watch(srcPaths.jade, ['jade']);
gulp.watch(srcPaths.css, ['css']);
gulp.watch(srcPaths.js, ['js']);
gulp.watch(srcPaths.img, ['images']);
gulp.watch(srcPaths.fonts, ['fonts']);
});
gulp.task('browser-sync', () => {
var files = [
buildPaths.build
];
browserSync.init(files, {
server: {
baseDir: './build/'
},
});
});
gulp.task('pages', () => {
gulp.src(buildPaths.build)
.pipe(ghPages());
});
gulp.task('default', ['css', 'jade', 'js', 'images', 'fonts', 'watch', 'browser-sync']);
gulp.task('deploy', ['css', 'jade', 'js', 'images', 'fonts', 'pages']);