11
11
*
12
12
*/
13
13
var gulp = require ( 'gulp' ) ;
14
+ var eslint = require ( 'gulp-eslint' ) ;
14
15
var browserSync = require ( 'browser-sync' ) ;
15
16
var reload = browserSync . reload ;
16
17
var $ = require ( 'gulp-load-plugins' ) ( ) ;
17
18
var del = require ( 'del' ) ;
18
19
var runSequence = require ( 'run-sequence' ) ;
19
20
21
+ var jsConfig = {
22
+ extends : 'eslint:recommended' ,
23
+ rules : {
24
+ 'quotes' : [ 1 , 'single' ] ,
25
+ 'curly' : [ 1 , 'multi-line' ] ,
26
+ 'no-extra-parens' : 1 ,
27
+ 'key-spacing' : [ 1 , {
28
+ 'beforeColon' : false ,
29
+ 'afterColon' : true ,
30
+ 'mode' : 'strict'
31
+ } ] ,
32
+ 'no-multi-spaces' : 1 ,
33
+ 'dot-location' : [ 1 , 'property' ] ,
34
+ 'max-len' : [ 1 , { 'code' : 80 , 'tabWidth' : 2 } ] ,
35
+ 'no-trailing-spaces' : 1 ,
36
+ 'indent' : [ 1 , 'tab' ] ,
37
+ 'no-empty-function' : 2 ,
38
+ 'eol-last' : [ 2 , 'always' ] ,
39
+ 'semi' : [ 2 , 'always' ] ,
40
+ 'no-multiple-empty-lines' : 2
41
+ }
42
+ } ;
43
+
20
44
21
45
// optimize images
22
46
gulp . task ( 'images' , function ( ) {
@@ -238,6 +262,22 @@ gulp.task('css:size', function() {
238
262
} ) ) ;
239
263
} ) ;
240
264
265
+ // lint javascript
266
+ gulp . task ( 'js:lint' , function ( ) {
267
+ // eslint-disable-next-line
268
+ return gulp . src ( [ 'app/**/*.js' , 'components/**/*.js' , 'js/**/*.js' , '!js/nonangular/*' ] )
269
+ . pipe ( eslint ( jsConfig ) )
270
+ . pipe ( eslint . format ( ) ) ;
271
+ } ) ;
272
+ // build lint javascript
273
+ gulp . task ( 'js:lint-build' , function ( ) {
274
+ // eslint-disable-next-line
275
+ return gulp . src ( [ 'app/**/*.js' , 'components/**/*.js' , 'js/**/*.js' , '!js/nonangular/*' ] )
276
+ . pipe ( eslint ( jsConfig ) )
277
+ . pipe ( eslint . format ( ) )
278
+ . pipe ( eslint . failAfterError ( ) ) ;
279
+ } ) ;
280
+
241
281
242
282
/////////////////////////////////////////////
243
283
///////// GULP COMMANDS /////////
@@ -256,15 +296,15 @@ gulp.task('server', function(done) {
256
296
// default task to be run with `gulp` command
257
297
// this default task will run BrowserSync & then use Gulp to watch files.
258
298
// when a file is changed, an event is emitted to BrowserSync with the filepath.
259
- gulp . task ( 'default' , [ 'browser-sync' , 'html:size' , 'src:js:size' , 'minify-css' ] , function ( ) {
299
+ gulp . task ( 'default' , [ 'browser-sync' , 'html:size' , 'src:js:size' , 'minify-css' , 'js:lint' ] , function ( ) {
260
300
gulp . watch ( 'styles/*.css' , function ( file ) {
261
301
if ( file . type === "changed" ) {
262
302
reload ( file . path ) ;
263
303
}
264
304
} ) ;
265
305
gulp . watch ( [ '*.html' , 'components/**/*.html' , 'views/**/*.html' ] , [ 'bs-reload' , 'html:size' ] ) ;
266
- gulp . watch ( [ 'app/**/*.js' , 'components/**/*.js' , 'js/**/*.js' ] , [ 'bs-reload' , 'src:js:size' ] ) ;
267
- gulp . watch ( [ './styles/**/*.css' ] , [ 'minify-css' ] ) ;
306
+ gulp . watch ( [ 'app/**/*.js' , 'components/**/*.js' , 'js/**/*.js' ] , [ 'bs-reload' , 'src:js:size' , 'js:lint' ] ) ;
307
+ gulp . watch ( [ './styles/**/*.css' ] , [ 'bs-reload' , ' minify-css'] ) ;
268
308
} ) ;
269
309
270
310
/**
@@ -281,6 +321,7 @@ gulp.task('default', ['browser-sync', 'html:size', 'src:js:size', 'minify-css'],
281
321
*/
282
322
gulp . task ( 'build' , function ( callback ) {
283
323
runSequence (
324
+ 'js:lint-build' ,
284
325
'clean:build' ,
285
326
'images' ,
286
327
'templates' ,
@@ -296,6 +337,7 @@ gulp.task('build', function(callback) {
296
337
// start webserver from _build folder to check how it will look in production
297
338
gulp . task ( 'server-build' , function ( callback ) {
298
339
runSequence (
340
+ 'js:lint-build' ,
299
341
'clean:build' ,
300
342
'images' ,
301
343
'templates' ,
0 commit comments