From 3941e04b1e5c54470f76d7b024aabbda268410bd Mon Sep 17 00:00:00 2001 From: Marat Khusnetdinov Date: Tue, 28 Aug 2018 21:29:53 +0300 Subject: [PATCH] [#55] Linters --- .gitignore | 1 + .quality/.eslintrc.yml | 276 +++++++++ .quality/.scss-lint.yml | 6 +- Gemfile | 3 +- Rakefile | 39 +- _config.yml | 4 +- _includes/head.html | 2 +- _includes/header.html | 16 +- _includes/javascripts.html | 4 +- _sass/_base.scss | 41 +- _sass/_main.scss | 5 + css/main.scss | 44 +- javascripts/classie.js | 85 --- javascripts/main.js | 603 ++++++++++--------- javascripts/vendor/classie.js | 85 +++ javascripts/{ => vendor}/dummydata.js | 0 javascripts/{ => vendor}/modernizr-custom.js | 0 package.json | 14 + 18 files changed, 790 insertions(+), 438 deletions(-) create mode 100644 .quality/.eslintrc.yml create mode 100644 _sass/_main.scss delete mode 100644 javascripts/classie.js create mode 100644 javascripts/vendor/classie.js rename javascripts/{ => vendor}/dummydata.js (100%) rename javascripts/{ => vendor}/modernizr-custom.js (100%) create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 45c1505..e62941b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ _site .sass-cache .jekyll-metadata +node_modules diff --git a/.quality/.eslintrc.yml b/.quality/.eslintrc.yml new file mode 100644 index 0000000..fbdae49 --- /dev/null +++ b/.quality/.eslintrc.yml @@ -0,0 +1,276 @@ +--- +extends: 'eslint:recommended' + +globals: + window: true + jQuery: true + +parser: espree + +env: + amd: false + browser: false + es6: false + jasmine: false + jquery: false + meteor: false + mocha: false + node: true + phantomjs: false + prototypejs: false + shelljs: false + +rules: + exclude-files: + - javascripts/vendor/*.js + # Possible Errors + comma-dangle: + - 2 + - never + no-comma-dangle: 0 # DEPRECATED + no-cond-assign: 2 + no-console: 2 + no-constant-condition: 2 + no-control-regex: 2 + no-debugger: 2 + no-dupe-args: 2 + no-dupe-keys: 2 + no-duplicate-case: 2 + no-empty-character-class: 2 + no-empty: 2 + no-ex-assign: 2 + no-extra-boolean-cast: 2 + no-extra-parens: 0 + no-extra-semi: 2 + no-func-assign: 2 + no-inner-declarations: + - 2 + - functions + no-invalid-regexp: 2 + no-irregular-whitespace: 2 + no-negated-in-lhs: 2 + no-obj-calls: 2 + no-regex-spaces: 2 + no-reserved-keys: 0 + no-sparse-arrays: 2 + no-unreachable: 2 + use-isnan: 2 + valid-jsdoc: 0 + valid-typeof: 2 + + # Best Practices + block-scoped-var: 0 + complexity: + - 0 + - 11 + consistent-return: 2 + curly: + - 2 + - all + default-case: 0 + dot-notation: + - 2 + - allowKeywords: true + eqeqeq: 2 + guard-for-in: 0 + no-alert: 2 + no-caller: 2 + no-div-regex: 0 + no-else-return: 0 + no-eq-null: 0 + no-eval: 2 + no-extend-native: 2 + no-extra-bind: 2 + no-fallthrough: 2 + no-floating-decimal: 0 + no-implied-eval: 2 + no-iterator: 2 + no-labels: 2 + no-lone-blocks: 2 + no-loop-func: 2 + no-multi-spaces: 2 + no-multi-str: 2 + no-native-reassign: 2 + no-new-func: 2 + no-new-wrappers: 2 + no-new: 2 + no-octal-escape: 2 + no-octal: 2 + no-param-reassign: 0 + no-process-env: 0 + no-proto: 2 + no-redeclare: 2 + no-return-assign: 2 + no-script-url: 2 + no-self-compare: 0 + no-sequences: 2 + no-throw-literal: 0 + no-unused-expressions: 2 + no-void: 0 + no-warning-comments: + - 0 + - terms: + - todo + - fixme + - xxx + location: start + no-with: 2 + radix: 0 + vars-on-top: 0 + wrap-iife: 0 + yoda: + - 2 + - never + + # Strict Mode + strict: + - error + - function + + # Variables + no-catch-shadow: 2 + no-delete-var: 2 + no-label-var: 2 + no-shadow-restricted-names: 2 + no-shadow: 2 + no-undef-init: 2 + no-undef: 2 + no-undefined: 0 + no-unused-vars: + - 2 + - vars: all + args: after-used + no-use-before-define: 2 + + # Node.js + handle-callback-err: 0 + no-mixed-requires: + - 0 + - false + no-new-require: 0 + no-path-concat: 0 + no-process-exit: 2 + no-restricted-modules: 0 + no-sync: 0 + + # Stylistic Issues + brace-style: + - 0 + - 1tbs + camelcase: 2 + comma-spacing: 2 + comma-style: 0 + consistent-this: + - 0 + - that + eol-last: 2 + func-names: 0 + func-style: + - 0 + - declaration + indent: + - error + - 2 + - VariableDeclarator: 2 + key-spacing: + - 2 + - beforeColon: false + afterColon: true + linebreak-style: + - 0 + - unix + max-nested-callbacks: + - 0 + - 2 + new-cap: 2 + new-parens: 2 + newline-after-var: 0 + no-array-constructor: 2 + no-continue: 0 + no-inline-comments: 0 + no-lonely-if: 0 + no-mixed-spaces-and-tabs: + - 2 + - false + no-multiple-empty-lines: + - 0 + - max: 2 + no-nested-ternary: 0 + no-new-object: 2 + no-space-before-semi: 0 # DEPRECATED + no-spaced-func: 2 + no-ternary: 0 + no-trailing-spaces: 2 + no-underscore-dangle: 0 + no-unneeded-ternary: 0 + one-var: 0 + operator-assignment: + - 0 + - always + operator-linebreak: 0 + padded-blocks: 0 + quote-props: 0 + quotes: + - 2 + - single + semi-spacing: + - 2 + - before: false + after: true + semi: 2 + sort-vars: 0 + space-after-function-name: # DEPRECATED + - 0 + - never + space-after-keywords: + - 0 + - always + space-before-blocks: + - 1 + - always + space-before-function-paren: + - 0 + - always + space-before-function-parentheses: # DEPRECATED + - 0 + - always + space-in-brackets: + - 0 + - never + space-in-parens: + - 0 + - never + space-infix-ops: 2 + keyword-spacing: 2 + space-unary-ops: + - 2 + - words: true + nonwords: false + space-unary-word-ops: 0 # DEPRECATED + spaced-line-comment: + - 0 + - always + wrap-regex: 0 + + # ECMAScript 6 + generator-star-spacing: 0 + generator-star: 0 # DEPRECATED + no-var: 0 + object-shorthand: 0 + + # Legacy + max-depth: + - 0 + - 4 + max-len: + - 0 + - 80 + - 4 + max-params: + - 0 + - 3 + max-statements: + - 0 + - 10 + no-bitwise: 0 + no-plusplus: 0 diff --git a/.quality/.scss-lint.yml b/.quality/.scss-lint.yml index 0efc695..3b39791 100644 --- a/.quality/.scss-lint.yml +++ b/.quality/.scss-lint.yml @@ -1,4 +1,4 @@ -scss_files: ['_sass/*.scss', 'css/*.scss'] +scss_files: ['_sass/*.scss'] plugin_directories: ['.scss-linters'] plugin_gems: [] severity: warning @@ -40,7 +40,7 @@ linters: enabled: false DuplicateProperty: - enabled: true + enabled: ElsePlacement: enabled: true @@ -283,7 +283,7 @@ linters: properties: [] VendorPrefix: - enabled: true + enabled: false identifier_list: base additional_identifiers: [] excluded_identifiers: [] diff --git a/Gemfile b/Gemfile index ca935c8..e039bdf 100644 --- a/Gemfile +++ b/Gemfile @@ -7,8 +7,9 @@ gem 'jekyll' gem 'rack-jekyll' gem 'rake' gem 'minima' + gem 'html-proofer' -gem 'scss_lint', require: false +gem 'scss_lint' group :jekyll_plugins do gem 'jekyll-multiple-languages-plugin' diff --git a/Rakefile b/Rakefile index 872550d..aab5aa6 100644 --- a/Rakefile +++ b/Rakefile @@ -1,13 +1,42 @@ # frozen_string_literal: true -require 'html-proofer' +desc 'Install all development gems and linters' +task 'development:prepare' do + puts 'Development preparing ...' + exec('npm install') + puts 'Done!' +end + +desc 'Lint *.html files' +task 'lint:html' do + require 'html-proofer' + sh 'bundle exec jekyll build' + + options = { + assume_extension: true, + disable_external: true, + report_invalid_tags: true + } -task :test do - sh "bundle exec jekyll build" - options = { :assume_extension => true } HTMLProofer.check_directory("./_site", options).run end +desc 'Lint *.scss files' +task 'lint:styles' do + exec('bundle exec scss-lint -c .quality/.scss-lint.yml') +end + +desc 'Lint *.javascript files' +task 'lint:javascript' do + exec('./node_modules/eslint/bin/eslint.js ./javascripts/main.js -c ./.quality/.eslintrc.yml') +end + +desc 'Lint all' +task 'lint' do + exec('rake lint:styles') + exec('rake lint:javascript') +end + task 'assets:precompile' do - exec('jekyll build') + exec('bundle exec jekyll build') end diff --git a/_config.yml b/_config.yml index c5e1dc4..28f3e60 100644 --- a/_config.yml +++ b/_config.yml @@ -10,7 +10,9 @@ collections: permalink: /:path # Locales settings -languages: ["en", "ru"] +languages: + - en + # - ru timezone: Europe/Moscow exclude_from_localizations: ["javascript", "images", "css"] diff --git a/_includes/head.html b/_includes/head.html index 29665e3..6efba8e 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -17,4 +17,4 @@ - + diff --git a/_includes/header.html b/_includes/header.html index 1cbe7fb..8ec60b4 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,11 +1,11 @@ - + + + + + + + +

Better Docs diff --git a/_includes/javascripts.html b/_includes/javascripts.html index 8388909..51eb57f 100644 --- a/_includes/javascripts.html +++ b/_includes/javascripts.html @@ -1,5 +1,5 @@ - - + +