@@ -16,99 +16,178 @@ var gulp = require('gulp'),
1616 deploy = require ( 'gulp-gh-pages' ) ,
1717 notify = require ( 'gulp-notify' ) ,
1818 sassLint = require ( 'gulp-sass-lint' ) ,
19- twig = require ( 'gulp-twig' ) ;
19+ twig = require ( 'gulp-twig' ) ,
20+ runSequence = require ( 'run-sequence' ) ,
21+ del = require ( 'del' ) ;
2022
23+ var is_prod = false ;
24+
25+ var paths = {
26+ libscss : 'source/scss/**/*.scss' ,
27+ sitescss : 'site/scss/**/*.scss' ,
28+ sitetwig : 'site/**/*.twig' ,
29+ siteimg : 'site/img' ,
30+ testimg : 'site/test/ref' ,
31+ testcss : 'site/test/css' ,
32+ filtersjson : 'site/filters.json' ,
33+ dev : '.dev/'
34+ }
35+ var compiledPaths = {
36+ libcss : 'source/css/' ,
37+ sitecss : 'site/css/'
38+ }
2139
2240gulp . task ( 'lib-scss' , function ( ) {
23- var onError = function ( err ) {
24- notify . onError ( {
25- title : "Gulp" ,
26- subtitle : "Failure!" ,
27- message : "Error: <%= error.message %>" ,
28- sound : "Beep"
29- } ) ( err ) ;
30- this . emit ( 'end' ) ;
41+ var dest = paths . dev + compiledPaths . libcss ;
42+ if ( is_prod ) {
43+ dest = compiledPaths . libcss ;
44+ }
45+ var onError = function ( err ) {
46+ notify . onError ( {
47+ title : "Gulp" ,
48+ subtitle : "Failure!" ,
49+ message : "Error: <%= error.message %>" ,
50+ sound : "Beep"
51+ } ) ( err ) ;
52+ this . emit ( 'end' ) ;
3153 } ;
3254
33- return gulp . src ( 'source/scss/**/*.scss' )
55+ return gulp . src ( paths . libscss )
3456 . pipe ( plumber ( { errorHandler : onError } ) )
3557 . pipe ( sass ( ) )
3658 . pipe ( size ( { gzip : true , showFiles : true } ) )
3759 . pipe ( prefix ( ) )
38- . pipe ( gulp . dest ( 'source/css' ) )
60+ . pipe ( gulp . dest ( dest ) )
3961 . pipe ( cssmin ( ) )
4062 . pipe ( size ( { gzip : true , showFiles : true } ) )
4163 . pipe ( rename ( { suffix : '.min' } ) )
42- . pipe ( gulp . dest ( 'source/css' ) )
43- . pipe ( gulp . dest ( 'site/css' ) )
64+ . pipe ( gulp . dest ( dest ) )
4465 . pipe ( reload ( { stream :true } ) ) ;
4566} ) ;
4667
4768gulp . task ( 'site-scss' , function ( ) {
48- var onError = function ( err ) {
49- notify . onError ( {
50- title : "Gulp" ,
51- subtitle : "Failure!" ,
52- message : "Error: <%= error.message %>" ,
53- sound : "Beep"
54- } ) ( err ) ;
55- this . emit ( 'end' ) ;
69+ var dest = paths . dev + compiledPaths . sitecss ;
70+ if ( is_prod ) {
71+ dest = compiledPaths . sitecss ;
72+ }
73+ var onError = function ( err ) {
74+ notify . onError ( {
75+ title : "Gulp" ,
76+ subtitle : "Failure!" ,
77+ message : "Error: <%= error.message %>" ,
78+ sound : "Beep"
79+ } ) ( err ) ;
80+ this . emit ( 'end' ) ;
5681 } ;
5782
58- return gulp . src ( 'site/scss/**/*.scss' )
83+ return gulp . src ( paths . sitescss )
5984 . pipe ( plumber ( { errorHandler : onError } ) )
6085 . pipe ( sass ( ) )
6186 . pipe ( size ( { gzip : true , showFiles : true } ) )
6287 . pipe ( prefix ( ) )
63- . pipe ( gulp . dest ( 'site/css' ) )
88+ . pipe ( gulp . dest ( dest ) )
89+ . pipe ( reload ( { stream :true } ) )
6490 . pipe ( cssmin ( ) )
6591 . pipe ( size ( { gzip : true , showFiles : true } ) )
6692 . pipe ( rename ( { suffix : '.min' } ) )
67- . pipe ( gulp . dest ( 'site/css' ) )
93+ . pipe ( gulp . dest ( dest ) )
6894 . pipe ( reload ( { stream :true } ) ) ;
6995} ) ;
7096
71- gulp . task ( 'browser-sync' , function ( ) {
72- browserSync ( {
73- server : {
74- baseDir : "site"
75- }
76- } ) ;
77- } ) ;
78-
79- gulp . task ( 'deploy' , function ( ) {
80- return gulp . src ( 'site/**/*' )
81- . pipe ( deploy ( ) ) ;
82- } ) ;
83-
8497gulp . task ( 'sass-lint' , function ( ) {
8598 gulp . src ( 'scss/**/*.scss' )
8699 . pipe ( sassLint ( ) )
87100 . pipe ( sassLint . format ( ) )
88101 . pipe ( sassLint . failOnError ( ) ) ;
89102} ) ;
90103
104+ gulp . task ( 'jshint' , function ( ) {
105+ gulp . src ( 'js/*.js' )
106+ . pipe ( jshint ( ) )
107+ . pipe ( jshint . reporter ( 'default' ) ) ;
108+ } ) ;
109+
91110gulp . task ( 'twig' , function ( ) {
92- gulp . src ( [ 'site/**/*.twig' , "!site/twig/template.twig" ] , { base : './' } )
111+ var dest = paths . dev ;
112+ if ( is_prod ) {
113+ dest = './' ;
114+ }
115+ gulp . src ( [ paths . sitetwig , "!site/twig/template.twig" ] , { base : './' } )
93116 . pipe ( twig ( {
94117 data : require ( './site/filters.json' )
95118 } ) )
96- . pipe ( gulp . dest ( './' ) ) ;
119+ . pipe ( gulp . dest ( dest ) ) ;
97120} ) ;
98121
122+ function copytask ( src , dest ) {
123+ return function ( ) {
124+ return gulp . src ( src )
125+ . pipe ( gulp . dest ( dest ) ) ;
126+ }
127+ }
99128
100- gulp . task ( 'watch' , function ( ) {
101- gulp . watch ( 'source/scss/**/*.scss' , [ 'lib-scss' , 'site-scss' , 'sass-lint' ] ) ;
102- gulp . watch ( 'site/scss/**/*.scss' , [ 'site-scss' , 'sass-lint' ] ) ;
129+ gulp . task ( 'copy-site-img' , copytask (
130+ paths . siteimg + '/**/*' ,
131+ paths . dev + paths . siteimg
132+ ) ) ;
133+ gulp . task ( 'copy-test-img' , copytask (
134+ paths . testimg + '/**/*' ,
135+ paths . dev + paths . testimg
136+ ) ) ;
137+ gulp . task ( 'copy-test-css' , copytask (
138+ paths . testcss + '/**/*' ,
139+ paths . dev + paths . testcss
140+ ) ) ;
141+ gulp . task ( 'copy-files' , [ 'copy-site-img' , 'copy-test-img' , 'copy-test-css' ] ) ;
142+
143+ gulp . task ( 'dev-build' , function ( cb ) {
144+ is_prod = false ;
145+ runSequence (
146+ 'cleandev' ,
147+ 'copy-files' ,
148+ 'site-scss' ,
149+ 'lib-scss' ,
150+ 'twig' ,
151+ cb
152+ ) ;
153+ } ) ;
154+ gulp . task ( 'watch' , [ 'dev-build' ] , function ( ) {
155+ browserSync ( {
156+ server : {
157+ baseDir : paths . dev + 'site'
158+ }
159+ } ) ;
160+ gulp . watch ( paths . libscss , [ 'lib-scss' , 'site-scss' , 'sass-lint' ] ) ;
161+ gulp . watch ( paths . sitescss , [ 'site-scss' , 'sass-lint' ] ) ;
103162 gulp . watch ( 'source/scss/**/*.html' , [ 'minify-html' ] ) ;
104- gulp . watch ( 'site/**/*.twig' , [ 'twig' ] ) ;
163+ gulp . watch ( paths . sitetwig , [ 'twig' ] ) ;
105164} ) ;
106165
166+ gulp . task ( 'cleandev' , function ( ) {
167+ return del ( [ paths . dev ] ) ;
168+ } ) ;
107169
108- gulp . task ( 'jshint' , function ( ) {
109- gulp . src ( 'js/*.js' )
110- . pipe ( jshint ( ) )
111- . pipe ( jshint . reporter ( 'default' ) ) ;
170+ gulp . task ( 'build' , function ( cb ) {
171+ is_prod = true ;
172+ runSequence (
173+ 'site-scss' ,
174+ 'lib-scss' ,
175+ 'twig' ,
176+ cb
177+ ) ;
178+ } ) ;
179+
180+ gulp . task ( 'server' , function ( ) {
181+ browserSync ( {
182+ server : {
183+ baseDir : 'site'
184+ }
185+ } ) ;
186+ } ) ;
187+
188+ gulp . task ( 'deploy' , function ( ) {
189+ return gulp . src ( 'site/**/*' )
190+ . pipe ( deploy ( ) ) ;
112191} ) ;
113192
114- gulp . task ( 'default' , [ 'browser-sync' , 'twig' , 'lib-scss' , 'site-scss' , ' watch'] ) ;
193+ gulp . task ( 'default' , [ 'watch' ] ) ;
0 commit comments