Add eslint, stylelint, prettier, and pre-commit (#484)

- When you try to commit, Pre-commit will run checks for all three, if
  installed, _only_ on staged files, and prevent committing if the linters are
  unhappy.
- Several eslint rules that generate a lot of errors are disabled for now.
  That's to allow a more gradual transition, so you won't change 1 line and be
  told to fix 100 other lines (but maybe like 20 because there are still a lot
  of rules enabled).
- Prettier is set to require pragma. That's also to allow a more gradual
  transition. As each file is tidied up, run Prettier on it, and it'll add a
  special comment that tells it that it's now responsible for keeping that one
  tidy.
This commit is contained in:
Mackenzie 2020-12-23 03:45:53 -05:00 committed by GitHub
parent 55ecbbe04f
commit e95ff80c3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17784 additions and 221 deletions

28
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,28 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/mirrors-prettier
rev: "v2.2.1"
hooks:
- id: prettier
files: "assets/js|assets/css"
args: [--config, assets/.prettierrc.json]
- repo: https://github.com/awebdeveloper/pre-commit-stylelint
rev: 'f792d6b'
hooks:
- id: stylelint
additional_dependencies:
- stylelint@13.2.1
- stylelint-config-standard@20.0.0
- repo: https://github.com/pre-commit/mirrors-eslint
rev: 'v7.15.0'
hooks:
- id: eslint
files: "assets/js"
additional_dependencies:
- eslint@7.2.0
- eslint-config-airbnb@18.2.0
- eslint-plugin-import@2.22.1
- eslint-plugin-jsx-a11y@6.4.1
- eslint-plugin-react@7.21.5
- eslint-plugin-react-hooks@4.2.0

14
assets/.eslintrc.json Normal file
View File

@ -0,0 +1,14 @@
{
"extends": ["airbnb", "prettier"],
"plugins": ["prettier"],
"rules": {
"max-len": [2, {"code": 100}],
"prettier/prettier": [2],
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
"react/destructuring-assignment": [0],
"react/prop-types": [0],
"max-classes-per-file": [0],
"react/jsx-one-expression-per-line": [0],
"react/self-closing-comp": [0]
}
}

5
assets/.prettierrc.json Normal file
View File

@ -0,0 +1,5 @@
{
"singleQuote": true,
"requirePragma": true,
"insertPragma": true
}

22
assets/.stylelintrc.json Normal file
View File

@ -0,0 +1,22 @@
{
"extends": [
"stylelint-config-standard",
"stylelint-config-prettier"
],
"rules": {
"at-rule-no-unknown": [
true,
{
"ignoreAtRules": [
"tailwind",
"apply",
"variants",
"responsive",
"screen"
]
}
],
"declaration-block-trailing-semicolon": null,
"no-descending-specificity": null
}
}

17923
assets/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -37,5 +37,18 @@
"url-search-params-polyfill": "^8.0.0", "url-search-params-polyfill": "^8.0.0",
"webpack": "4.39.2", "webpack": "4.39.2",
"webpack-cli": "^3.3.12" "webpack-cli": "^3.3.12"
},
"devDependencies": {
"eslint": "^7.2.0",
"eslint-config-airbnb": "^18.2.0",
"eslint-config-prettier": "^7.0.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-prettier": "^3.3.0",
"eslint-plugin-react": "^7.21.5",
"eslint-plugin-react-hooks": "^4.2.0",
"stylelint": "^13.8.0",
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-standard": "^20.0.0"
} }
} }