/
gulpfile.js
94 lines (86 loc) · 2.79 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Include Gulp
var gulp = require( 'gulp' );
// Include Plugins
var sass = require( 'gulp-sass' );
var autoprefixer = require( 'gulp-autoprefixer' );
var imagemin = require( 'gulp-imagemin' );
var pngquant = require( 'imagemin-pngquant' );
var jshint = require( 'gulp-jshint' );
var concat = require( 'gulp-concat' );
var cache = require( 'gulp-cache' );
var sourcemaps = require( 'gulp-sourcemaps' );
var csscomb = require( 'gulp-csscomb' );
var livereload = require( 'gulp-livereload' );
var svgmin = require( 'gulp-svgmin' );
var cheerio = require( 'gulp-cheerio' );
var svgstore = require( 'gulp-svgstore' );
var notify = require( 'gulp-notify' );
// Styles tasks
gulp.task( 'styles', function() {
return gulp.src( 'assets/stylesheets/style.scss' )
.pipe( sourcemaps.init() )
.pipe( sass( { style: 'expanded' } ) )
.on( 'error', notify.onError( function( err ) {
return "Stylesheet Error in " + err.message;
} ) )
.pipe( autoprefixer( { browsers: ['last 2 versions', 'ie >= 9'], cascade: false } ) )
//.pipe( csscomb() )
.pipe( sourcemaps.write( './', { includeContent: false, sourceRoot: 'source' } ) )
.pipe( gulp.dest( './' ) )
.pipe( livereload() );
});
// Scripts
gulp.task( 'scripts', function() {
return gulp.src( 'assets/js/*.js' )
.pipe( jshint.reporter( 'default' ) )
//.pipe( concat( 'main.js' ) )
.pipe( gulp.dest( 'assets/js' ) );
} );
// Images
gulp.task( 'images', function() {
return gulp.src( 'assets/images/*' )
.pipe( cache( imagemin( {
optimizationLevel: 3,
progressive: true,
interlaced: true,
svgoPlugins: [{ removeViewBox: false }],
use: [pngquant()]
} ) ) )
.pipe( gulp.dest( 'assets/images' ) );
} );
// Minify our icons and make them into an inline sprite
gulp.task( 'icons', function() {
return gulp.src( 'assets/svg/icons/*.svg' )
.pipe( svgmin() )
.pipe( svgstore( {
fileName: 'icons.svg',
inlineSvg: true
} ) )
.pipe( cheerio( {
run: function( $, file ) {
$( 'svg' ).addClass( 'hide' );
$( '[fill]' ).removeAttr( 'fill' );
},
parserOptions: { xmlMode: true }
}))
.pipe( gulp.dest( 'assets/svg' ) );
});
// Generate style guide assets.
gulp.task( 'style-guide', function() {
return gulp.src( 'assets/style-guide/stylesheets/style-guide.scss' )
.pipe( sass( { style: 'expanded' } ).on( 'error', sass.logError ) )
.on( 'error', function ( err ) {
console.error( 'Error!', err.message );
} )
.pipe( gulp.dest( 'assets/style-guide' ) )
});
// Watch files for changes
gulp.task( 'watch', function() {
livereload.listen();
gulp.watch( 'assets/**/*.scss', ['styles', 'style-guide'] );
gulp.watch( 'assets/js/**/*.js', ['scripts'] );
gulp.watch( 'assets/images/*', ['images'] );
gulp.watch( 'assets/svg/icons/*', ['icons'] );
} );
// Default Task
gulp.task( 'default', ['styles', 'scripts', 'images', 'icons', 'style-guide', 'watch'] );