From d5cc4b7b3480689c98265f19242e80f25d927c0a Mon Sep 17 00:00:00 2001 From: Ilan Biala Date: Thu, 15 Oct 2015 17:33:52 -0400 Subject: [PATCH] Add ESLint support --- .eslintrc | 37 +++++++++++++++++++++++++++++++++++++ gruntfile.js | 6 +++++- gulpfile.js | 18 +++++++++++++++++- package.json | 2 ++ 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 .eslintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..098c60b1 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,37 @@ +{ + rules: { + indent: [2, 2, {"SwitchCase": 1}], + no-multi-spaces: 2, + no-underscore-dangle: 0, + no-use-before-define: [1, "nofunc"], + no-unused-expressions: 0, + no-empty-class: 0, + object-curly-spacing: [2, "always"], + quotes: [1, "single"], + space-in-parens: [2, "never"] + }, + env: { + node: true + }, + globals: { + angular: true, + $: true, + jQuery: true, + moment: true, + window: true, + document: true, + Modernizr: true, + __TESTING__: true, + beforeEach: true, + expect: true, + describe: true, + it: true, + element: true, + by: true, + browser: true, + inject: true, + register: true, + sinon: true, + _: false + } +} diff --git a/gruntfile.js b/gruntfile.js index 9564b81d..ff64d2fa 100644 --- a/gruntfile.js +++ b/gruntfile.js @@ -101,6 +101,10 @@ module.exports = function (grunt) { } } }, + eslint: { + options: {}, + target: _.union(defaultAssets.server.gruntConfig, defaultAssets.server.allJS, defaultAssets.client.js, testAssets.tests.server, testAssets.tests.client, testAssets.tests.e2e) + }, csslint: { options: { csslintrc: '.csslintrc' @@ -270,7 +274,7 @@ module.exports = function (grunt) { }); // Lint CSS and JavaScript files. - grunt.registerTask('lint', ['sass', 'less', 'jshint', 'csslint']); + grunt.registerTask('lint', ['sass', 'less', 'jshint', 'eslint', 'csslint']); // Lint project files and minify them into two production files. grunt.registerTask('build', ['env:dev', 'lint', 'ngAnnotate', 'uglify', 'cssmin']); diff --git a/gulpfile.js b/gulpfile.js index 84e0cb6a..bd2eb890 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -96,6 +96,22 @@ gulp.task('jshint', function () { .pipe(plugins.jshint.reporter('fail')); }); +// ESLint JS linting task +gulp.task('eslint', function () { + var assets = _.union( + defaultAssets.server.gulpConfig, + defaultAssets.server.allJS, + defaultAssets.client.js, + testAssets.tests.server, + testAssets.tests.client, + testAssets.tests.e2e + ); + + return gulp.src(assets) + .pipe(plugins.eslint()) + .pipe(plugins.eslint.format()); +}); + // JS minifying task gulp.task('uglify', function () { var assets = _.union( @@ -226,7 +242,7 @@ gulp.task('protractor', ['webdriver_update'], function () { // Lint CSS and JavaScript files. gulp.task('lint', function (done) { - runSequence('less', 'sass', ['csslint', 'jshint'], done); + runSequence('less', 'sass', ['csslint', 'eslint', 'jshint'], done); }); // Lint project files and minify them into two production files. diff --git a/package.json b/package.json index 0c42ba50..d98b6d31 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "grunt-contrib-uglify": "~0.9.1", "grunt-contrib-watch": "~0.6.1", "grunt-env": "~0.4.4", + "grunt-eslint": "~17.3.1", "grunt-karma": "~0.11.2", "grunt-mocha-istanbul": "^2.4.0", "grunt-mocha-test": "~0.12.7", @@ -89,6 +90,7 @@ "gulp-concat": "^2.6.0", "gulp-csslint": "~0.1.5", "gulp-cssmin": "~0.1.7", + "gulp-eslint": "~1.0.0", "gulp-jshint": "^1.11.2", "gulp-karma": "~0.0.4", "gulp-less": "^3.0.3",