1+ var paths = require ( '../paths' ) ;
2+ var context = require ( '../gulp-context' ) ;
3+
4+ var runSequence = require ( 'run-sequence' ) ;
5+
6+ var gulp = require ( 'gulp' ) ;
7+ var changed = require ( 'gulp-changed' ) ;
8+ var plumber = require ( 'gulp-plumber' ) ;
9+ var notify = require ( 'gulp-notify' ) ;
10+ var sourcemaps = require ( 'gulp-sourcemaps' ) ;
11+ var autoprefixer = require ( 'gulp-autoprefixer' ) ;
12+ var sass = require ( 'gulp-sass' ) ;
13+
14+ gulp . task ( 'build-scripts' , function ( ) {
15+ // TODO: add script build
16+ } ) ;
17+
18+ gulp . task ( 'build-templates' , function ( ) {
19+ // TODO: add template build
20+ } ) ;
21+
22+ var reportError = function ( error ) {
23+ notify ( {
24+ title : 'Gulp Task Error' ,
25+ message : 'Check the console.'
26+ } ) . write ( error ) ;
27+
28+ console . log ( error . toString ( ) ) ;
29+
30+ // Explicitely exit the stream, which gracefully kicks out of the task, letting watch survive
31+ this . emit ( 'end' ) ;
32+ if ( context . env !== 'watch' ) {
33+ return process . exit ( 2 ) ;
34+ }
35+ } ;
36+
37+ gulp . task ( 'build-styles' , function ( ) {
38+ return gulp . src ( paths . styles )
39+ . pipe ( plumber ( { errorHandler : reportError } ) )
40+ . pipe ( changed ( paths . output , { extension : '.css' } ) )
41+ . pipe ( sourcemaps . init ( ) )
42+ . pipe ( sass ( ) )
43+ . pipe ( sourcemaps . write ( ) )
44+ . pipe ( autoprefixer ( {
45+ browsers : [ 'last 2 versions' , '> 5%' , 'Firefox ESR' ]
46+ } ) )
47+ . pipe ( gulp . dest ( paths . output ) ) ;
48+ } ) ;
49+
50+ gulp . task ( 'build' , function ( callback ) {
51+ return runSequence (
52+ 'clean' ,
53+ [ 'build-scripts' , 'build-templates' , 'build-styles' ] ,
54+ function ( err ) {
55+ if ( err ) {
56+ var exitCode = 2 ;
57+ console . log ( '[ERROR] gulp build task failed' , err ) ;
58+ console . log ( '[FAIL] gulp build task failed - exiting with code ' + exitCode ) ;
59+ return process . exit ( exitCode ) ;
60+ } else {
61+ return callback ( ) ;
62+ }
63+ }
64+ ) ;
65+ } ) ;
0 commit comments