@@ -19,7 +19,6 @@ const parallelize = require('concurrent-transform');
19
19
< % } - % >
20
20
// BrowserSync is used to live-reload your website
21
21
const browserSync = require ( 'browser-sync' ) . create ( ) ;
22
- const reload = browserSync . reload ;
23
22
// AutoPrefixer
24
23
const autoprefixer = require ( 'autoprefixer' ) ;
25
24
// Yargs for command line arguments
@@ -244,29 +243,42 @@ gulp.task('deploy', () => {
244
243
245
244
< % } - % >
246
245
< % if ( noUpload ) { - % > < % } - % >
247
- // 'gulp lint' -- check your JS for formatting errors using XO Space
248
- gulp . task ( 'lint' , ( ) =>
249
- gulp . src ( [
250
- 'gulpfile.babel.js' ,
251
- '.tmp/assets/javascript/*.js' ,
252
- '!.tmp/assets/javascript/*.min.js'
253
- ] )
254
- . pipe ( $ . eslint ( ) )
255
- . pipe ( $ . eslint . formatEach ( ) )
256
- . pipe ( $ . eslint . failOnError ( ) )
246
+ // 'gulp assets:copy' -- copies the assets into the dist directory, needs to be
247
+ // done this way because Jekyll overwrites the whole directory otherwise
248
+ gulp . task ( 'copy:assets' , ( ) =>
249
+ gulp . src ( '.tmp/assets/**/*' )
250
+ . pipe ( gulp . dest ( 'dist/assets' ) )
257
251
) ;
258
252
253
+ // 'gulp jekyll:copy' -- copies your processed Jekyll site to the dist directory
254
+ gulp . task ( 'copy:jekyll' , ( ) =>
255
+ gulp . src ( '.tmp/dist/**/*' )
256
+ . pipe ( gulp . dest ( 'dist' ) )
257
+ ) ;
258
+
259
+ // 'gulp inject' -- injects your CSS and JS into either the header or the footer
260
+ gulp . task ( 'inject' , gulp . parallel ( 'inject:head' , 'inject:footer' ) ) ;
261
+
262
+ // 'gulp build:jekyll' -- copies, builds, and then copies it again
263
+ gulp . task ( 'build:jekyll' , gulp . series ( 'jekyll:tmp' , 'inject' , 'jekyll' , 'copy:jekyll' ) ) ;
264
+
265
+ // Function to properly reload your browser
266
+ function reload ( done ) {
267
+ browserSync . reload ( ) ;
268
+ done ( ) ;
269
+ }
259
270
// 'gulp serve' -- open up your website in your browser and watch for changes
260
271
// in all your files and update them when needed
261
- gulp . task ( 'serve' , ( ) => {
272
+ gulp . task ( 'serve' , ( done ) => {
262
273
browserSync . init ( {
263
274
// tunnel: true,
264
275
// open: false,
265
276
server : [ '.tmp' , 'dist' ]
266
277
} ) ;
278
+ done ( ) ;
267
279
268
280
// Watch various files for changes and do the needful
269
- gulp . watch ( [ 'src/**/*.md' , 'src/**/*.html' , 'src/**/*.yml' ] , gulp . series ( 'jekyll' , reload ) ) ;
281
+ gulp . watch ( [ 'src/**/*.md' , 'src/**/*.html' , 'src/**/*.yml' ] , gulp . series ( 'build: jekyll' , reload ) ) ;
270
282
gulp . watch ( [ 'src/**/*.xml' , 'src/**/*.txt' ] , gulp . series ( 'jekyll' ) ) ;
271
283
gulp . watch ( 'src/assets/javascript/**/*.js' , gulp . series ( 'scripts' ) ) ;
272
284
gulp . watch ( 'src/assets/scss/**/*.scss' , gulp . series ( 'styles' ) ) ;
@@ -277,39 +289,33 @@ gulp.task('serve', () => {
277
289
// 'gulp assets --prod' -- cleans out your assets and rebuilds them with
278
290
// production settings
279
291
gulp . task ( 'assets' , gulp . series (
280
- gulp . series ( 'clean:assets ') ,
281
- gulp . parallel ( 'styles' , 'scripts' , 'fonts' , 'images ')
292
+ gulp . parallel ( 'styles' , 'scripts' , 'fonts' , 'images ') ,
293
+ gulp . series ( 'copy:assets ')
282
294
) ) ;
283
295
284
- // 'gulp assets:copy' -- copies the assets into the dist directory, needs to be
285
- // done this way because Jekyll overwrites the whole directory otherwise
286
- gulp . task ( 'copy:assets' , ( ) =>
287
- gulp . src ( '.tmp/assets/**/*' )
288
- . pipe ( gulp . dest ( 'dist/assets' ) )
289
- ) ;
290
-
291
- // gulp jekyll:copy' -- copies your processed Jekyll site to the dist directory
292
- gulp . task ( 'copy:jekyll' , ( ) =>
293
- gulp . src ( '.tmp/dist/**/*' )
294
- . pipe ( gulp . dest ( 'dist' ) )
295
- ) ;
296
-
297
296
// 'gulp clean' -- erases your assets and gzipped files
298
- gulp . task ( 'clean' , gulp . series ( 'clean:assets' , 'clean:dist' , 'clean:jekyll' ) ) ;
299
-
300
- // 'gulp check' -- checks your Jekyll configuration for errors and lint your JS
301
- gulp . task ( 'check' , gulp . series ( 'jekyll:doctor' , 'lint' ) ) ;
297
+ gulp . task ( 'clean' , gulp . series ( 'clean:assets' , 'clean:gzip' , 'clean:dist' , 'clean:jekyll' ) ) ;
302
298
303
- // 'gulp build' -- cleans out temporary files, injects your JS and CSS and generates your site, and then your assets
304
- // 'gulp build --prod' -- same as above, but with production settings
299
+ // 'gulp build' -- same as 'gulp' but doesn't serve your site in your browser
300
+ // 'gulp build --prod' -- same as above but with production settings
305
301
gulp . task ( 'build' , gulp . series (
306
- gulp . series ( 'clean' , ' assets', 'jekyll:tmp' , 'inject:head' , 'inject:footer' , 'jekyll ') ,
307
- gulp . parallel ( 'copy: assets', 'copy :jekyll' ) ,
302
+ gulp . series ( 'clean: assets' , 'clean:gzip ' ) ,
303
+ gulp . series ( 'clean' , ' assets', 'build :jekyll' ) ,
308
304
gulp . series ( 'html' )
309
305
) ) ;
310
306
311
- // 'gulp' -- runs the 'build' task and then serves your site
307
+ // 'gulp rebuild' -- WARNING: Erases your assets and built site, use only when
308
+ // you need to do a complete rebuild
309
+ gulp . task ( 'rebuild' , gulp . series ( 'clean:dist' , 'clean:assets' ,
310
+ 'clean:images' , 'clean:metadata' ) ) ;
311
+
312
+ // 'gulp check' -- checks your Jekyll configuration for errors and lint your JS
313
+ gulp . task ( 'check' , gulp . series ( 'jekyll:doctor' ) ) ;
314
+
315
+ // 'gulp' -- cleans your assets and gzipped files, creates your assets and
316
+ // injects them into the templates, then builds your site, copied the assets
317
+ // into their directory and serves the site
318
+ // 'gulp --prod' -- same as above but with production settings
312
319
gulp . task ( 'default' , gulp . series (
313
320
gulp . series ( 'build' , 'serve' )
314
321
) ) ;
315
-
0 commit comments