diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..95a8def --- /dev/null +++ b/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + "extends": "eslint:recommended", + "globals": { + "wp": true, + }, + "env": { + "browser": true, + "jquery": true, + "node": true, + "amd": true + }, + "rules": { + "no-console": 0 + } +} diff --git a/.jscsrc b/.jscsrc deleted file mode 100644 index 824aeb1..0000000 --- a/.jscsrc +++ /dev/null @@ -1,95 +0,0 @@ -{ - "requireCurlyBraces": [ - "if", - "else", - "for", - "while", - "do", - "try", - "catch" - ], - "requireOperatorBeforeLineBreak": true, - "requireCamelCaseOrUpperCaseIdentifiers": true, - "maximumLineLength": { - "value": 80, - "allowComments": true, - "allowRegex": true - }, - "validateIndentation": 2, - "validateQuoteMarks": "'", - "disallowMultipleLineStrings": true, - "disallowMixedSpacesAndTabs": true, - "disallowTrailingWhitespace": true, - "disallowSpaceAfterPrefixUnaryOperators": true, - "disallowMultipleVarDecl": true, - "disallowKeywordsOnNewLine": [ - "else" - ], - "requireSpaceAfterKeywords": [ - "if", - "else", - "for", - "while", - "do", - "switch", - "return", - "try", - "catch" - ], - "requireSpaceBeforeBinaryOperators": [ - "=", - "+=", - "-=", - "*=", - "/=", - "%=", - "<<=", - ">>=", - ">>>=", - "&=", - "|=", - "^=", - "+=", - "+", - "-", - "*", - "/", - "%", - "<<", - ">>", - ">>>", - "&", - "|", - "^", - "&&", - "||", - "===", - "==", - ">=", - "<=", - "<", - ">", - "!=", - "!==" - ], - "requireSpaceAfterBinaryOperators": true, - "requireSpacesInConditionalExpression": true, - "requireSpaceBeforeBlockStatements": true, - "requireSpacesInForStatement": true, - "requireLineFeedAtFileEnd": true, - "requireSpacesInFunctionExpression": { - "beforeOpeningCurlyBrace": true - }, - "disallowSpacesInAnonymousFunctionExpression": { - "beforeOpeningRoundBrace": true - }, - "disallowSpacesInsideObjectBrackets": "all", - "disallowSpacesInsideArrayBrackets": "all", - "disallowSpacesInsideParentheses": true, - "jsDoc": { - "checkParamNames": true, - "requireParamTypes": true - }, - "disallowMultipleLineBreaks": true, - "disallowNewlineBeforeBlockStatements": true -} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 02b1ec4..0000000 --- a/.jshintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "bitwise": true, - "browser": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "esnext": true, - "immed": true, - "jquery": true, - "latedef": true, - "newcap": true, - "noarg": true, - "node": true, - "strict": false -} diff --git a/.travis.yml b/.travis.yml index 2215717..f9d7d43 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ cache: install: - npm install -g npm@latest - - npm install -g bower gulp jscs + - npm install -g bower gulp eslint - npm install - composer self-update && composer --version - export PATH="$HOME/.composer/vendor/bin:$PATH" @@ -28,7 +28,6 @@ install: script: - npm run build - - npm run jshint - - npm run jscs + - npm run lint - phpcs --standard=ruleset.xml --extensions=php --ignore=node_modules,bower_components,vendor -n -s . - phpmd src text cleancode,codesize,controversial,design,naming,unusedcode diff --git a/gulpfile.js b/gulpfile.js index d14c36f..6c6874a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -8,7 +8,7 @@ var flatten = require('gulp-flatten'); var gulp = require('gulp'); var gulpif = require('gulp-if'); var imagemin = require('gulp-imagemin'); -var jshint = require('gulp-jshint'); +var eslint = require('gulp-eslint'); var lazypipe = require('lazypipe'); var less = require('gulp-less'); var merge = require('merge-stream'); @@ -58,8 +58,8 @@ var enabled = { maps: !argv.production, // Fail styles task on error when `--production` failStyleTask: argv.production, - // Fail due to JSHint warnings only when `--production` - failJSHint: argv.production, + // Fail due to ESLint warnings only when `--production` + failESLint: argv.production, // Strip debug statments from javascript when `--production` stripJSDebug: argv.production }; @@ -184,9 +184,9 @@ gulp.task('styles', ['wiredep'], function() { }); // ### Scripts -// `gulp scripts` - Runs JSHint then compiles, combines, and optimizes Bower JS +// `gulp scripts` - Runs ESLint then compiles, combines, and optimizes Bower JS // and project JS. -gulp.task('scripts', ['jshint'], function() { +gulp.task('scripts', ['lint'], function() { var merged = merge(); manifest.forEachDependency('js', function(dep) { merged.add( @@ -221,15 +221,15 @@ gulp.task('images', function() { .pipe(browserSync.stream()); }); -// ### JSHint -// `gulp jshint` - Lints configuration JSON and project JS. -gulp.task('jshint', function() { +// ### ESLint +// `gulp lint` - Lints configuration JSON and project JS. +gulp.task('lint', function() { return gulp.src([ - 'bower.json', 'gulpfile.js' + 'gulpfile.js' ].concat(project.js)) - .pipe(jshint()) - .pipe(jshint.reporter('jshint-stylish')) - .pipe(gulpif(enabled.failJSHint, jshint.reporter('fail'))); + .pipe(eslint()) + .pipe(eslint.format()) + .pipe(gulpif(enabled.failESLint, eslint.failAfterError())); }); // ### Clean @@ -252,7 +252,7 @@ gulp.task('watch', function() { } }); gulp.watch([path.source + 'styles/**/*'], ['styles']); - gulp.watch([path.source + 'scripts/**/*'], ['jshint', 'scripts']); + gulp.watch([path.source + 'scripts/**/*'], ['lint', 'scripts']); gulp.watch([path.source + 'fonts/**/*'], ['fonts']); gulp.watch([path.source + 'images/**/*'], ['images']); gulp.watch(['bower.json', 'assets/manifest.json'], ['build']); diff --git a/package.json b/package.json index 40b1c12..e333c90 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,7 @@ ], "scripts": { "build": "bower install && gulp", - "jshint": "gulp jshint", - "jscs": "jscs gulpfile.js assets/scripts/*.js" + "lint": "gulp lint" }, "engines": { "node": ">= 0.12.0", @@ -28,31 +27,30 @@ }, "devDependencies": { "asset-builder": "^1.1.0", - "browser-sync": "^2.8.2", - "del": "^1.2.1", + "browser-sync": "^2.10.1", + "del": "^2.2.0", "gulp": "^3.9.0", - "gulp-autoprefixer": "^2.3.1", + "gulp-autoprefixer": "^3.1.0", "gulp-changed": "^1.3.0", "gulp-concat": "^2.6.0", "gulp-cssnano": "^2.1.0", - "gulp-flatten": "0.1.1", - "gulp-if": "^1.2.5", - "gulp-imagemin": "^2.3.0", - "gulp-jshint": "^1.11.2", - "gulp-less": "^3.0.3", + "gulp-eslint": "^1.1.1", + "gulp-flatten": "0.2.0", + "gulp-if": "^2.0.0", + "gulp-imagemin": "^2.4.0", + "gulp-less": "^3.0.5", "gulp-plumber": "^1.0.1", "gulp-rename": "^1.2.2", - "gulp-rev": "^6.0.0", - "gulp-sass": "^2.0.1", - "gulp-sourcemaps": "^1.5.2", - "gulp-uglify": "^1.2.0", + "gulp-rev": "^6.0.1", + "gulp-sass": "^2.1.1", + "gulp-sourcemaps": "^1.6.0", + "gulp-uglify": "^1.5.1", "imagemin-pngcrush": "^4.1.0", - "jshint-stylish": "^2.0.1", "lazypipe": "^1.0.1", "merge-stream": "^1.0.0", - "minimist": "^1.1.3", - "run-sequence": "^1.1.2", + "minimist": "^1.2.0", + "run-sequence": "^1.1.5", "traverse": "^0.6.6", - "wiredep": "^2.2.2" + "wiredep": "^3.0.0" } }