From f2d91821557223bdbcfa93a767569bb5b319ed5a Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Mon, 13 Oct 2014 00:39:27 +0300 Subject: [PATCH] Add JSCS JavaScript code style checker to build Ref https://github.com/jscs-dev/node-jscs#readme h5bp/html5-boilerplate#1617 --- .jscsrc | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ gulpfile.js | 11 +++++---- package.json | 1 + 3 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 .jscsrc diff --git a/.jscsrc b/.jscsrc new file mode 100644 index 00000000..46b46934 --- /dev/null +++ b/.jscsrc @@ -0,0 +1,67 @@ +{ + "disallowEmptyBlocks": true, + "disallowKeywords": [ + "with" + ], + "disallowMixedSpacesAndTabs": true, + "disallowMultipleLineStrings": true, + "disallowMultipleVarDecl": true, + "disallowSpaceAfterPrefixUnaryOperators": [ + "!", + "+", + "++", + "-", + "--", + "~" + ], + "disallowSpaceBeforeBinaryOperators": [ + "," + ], + "disallowSpaceBeforePostfixUnaryOperators": true, + "disallowSpacesInNamedFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInsideArrayBrackets": true, + "disallowSpacesInsideParentheses": true, + "disallowTrailingComma": true, + "disallowTrailingWhitespace": true, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "requireCapitalizedConstructors": true, + "requireCommaBeforeLineBreak": true, + "requireCurlyBraces": true, + "requireDotNotation": true, + "requireLineFeedAtFileEnd": true, + "requireParenthesesAroundIIFE": true, + "requireSpaceAfterBinaryOperators": true, + "requireSpaceAfterKeywords": [ + "catch", + "do", + "else", + "for", + "if", + "return", + "switch", + "try", + "while" + ], + "requireSpaceAfterLineComment": true, + "requireSpaceBeforeBinaryOperators": true, + "requireSpaceBeforeBlockStatements": true, + "requireSpacesInAnonymousFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInConditionalExpression": true, + "requireSpacesInFunctionDeclaration": { + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInNamedFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInsideObjectBrackets": "allButNested", + "validateIndentation": 4, + "validateParameterSeparator": ", ", + "validateQuoteMarks": "'" +} diff --git a/gulpfile.js b/gulpfile.js index 09ebddbf..06ef1181 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -126,12 +126,13 @@ gulp.task('copy:normalize', function () { .pipe(gulp.dest(template('<%= dist %>/css', dirs))); }); -gulp.task('jshint', function () { +gulp.task('lint:js', function () { return gulp.src([ 'gulpfile.js', - template('<%= test %>/*.js', dirs), - template('<%= src %>/js/*.js', dirs) - ]).pipe(plugins.jshint()) + template('<%= src %>/js/*.js', dirs), + template('<%= test %>/*.js', dirs) + ]).pipe(plugins.jscs()) + .pipe(plugins.jshint()) .pipe(plugins.jshint.reporter('jshint-stylish')) .pipe(plugins.jshint.reporter('fail')); }); @@ -151,7 +152,7 @@ gulp.task('archive', function (done) { gulp.task('build', function (done) { runSequence( - ['clean', 'jshint'], + ['clean', 'lint:js'], 'copy', done); }); diff --git a/package.json b/package.json index 1dfb5edd..5dc9d7a6 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "glob": "^4.0.6", "gulp": "^3.8.8", "gulp-header": "^1.1.1", + "gulp-jscs": "^1.1.2", "gulp-jshint": "^1.8.5", "gulp-load-plugins": "^0.7.0", "gulp-rename": "^1.2.0",