Skip to content

Commit

Permalink
[#55] Linters
Browse files Browse the repository at this point in the history
  • Loading branch information
khusnetdinov committed Aug 28, 2018
1 parent 05e6dc9 commit 3941e04
Show file tree
Hide file tree
Showing 18 changed files with 790 additions and 438 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
_site
.sass-cache
.jekyll-metadata
node_modules
276 changes: 276 additions & 0 deletions .quality/.eslintrc.yml
Original file line number Diff line number Diff line change
@@ -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
6 changes: 3 additions & 3 deletions .quality/.scss-lint.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
scss_files: ['_sass/*.scss', 'css/*.scss']
scss_files: ['_sass/*.scss']
plugin_directories: ['.scss-linters']
plugin_gems: []
severity: warning
Expand Down Expand Up @@ -40,7 +40,7 @@ linters:
enabled: false

DuplicateProperty:
enabled: true
enabled:

ElsePlacement:
enabled: true
Expand Down Expand Up @@ -283,7 +283,7 @@ linters:
properties: []

VendorPrefix:
enabled: true
enabled: false
identifier_list: base
additional_identifiers: []
excluded_identifiers: []
Expand Down
3 changes: 2 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
39 changes: 34 additions & 5 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -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
4 changes: 3 additions & 1 deletion _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ collections:
permalink: /:path

# Locales settings
languages: ["en", "ru"]
languages:
- en
# - ru
timezone: Europe/Moscow
exclude_from_localizations: ["javascript", "images", "css"]

Expand Down
2 changes: 1 addition & 1 deletion _includes/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@
<link rel="stylesheet" href="/css/main.css">

<!-- JavaScript -->
<script src="javascripts/modernizr-custom.js"></script>
<script src="/javascripts/vendor/modernizr-custom.js"></script>
Loading

0 comments on commit 3941e04

Please sign in to comment.