Skip to content

Instantly share code, notes, and snippets.

@codfish codfish/#linting.md
Last active Aug 23, 2019

Embed
What would you like to do?
Prettier + ESLint + airbnb config + Husky + lint-staged + commitlint + markdownlint

My personal & professional linting setup. Extends airbnb's ESLint config first, then Prettier. Run's Prettier as an ESLint rule via their ESLint plugin. Dynamic support for react or non-react applications depending on your project dependencies. Dynamic inclusion of Kent C Dodds' ESLint Jest config depending on your project dependencies. Ultimate goal is maximize code linting coverage, leveraging the power of Prettier while deferring to Airbnb's style guide AS MUCH as possible without breaking anything. Convenient opt-in configs for projects using Docker or Ethereum to avoid common false positives. To understand more, see https://github.com/codfish/eslint-config-codfish.

Installation

npm install --save-dev --save-exact prettier
npm install --save-dev husky lint-staged @commitlint/cli @commitlint/config-conventional markdownlint-cli
npx install-peerdeps --dev eslint-config-codfish

Usage

module.exports = {
  extends: ['codfish'],
  root: true,
};
module.exports = {
extends: ['@commitlint/config-conventional'],
'scope-enum': [2, 'always', [
// only allow scopes listed here
]],
// https://conventional-changelog.github.io/commitlint/#/reference-rules?id=scope-case
'scope-case': [2, 'always', 'pascal-case'],
};
package.json
package-lock.json
node_modules
build
dist
public
serviceWorker.js
!.*.js
module.exports = {
extends: ['codfish'],
root: true,
};
module.exports = {
hooks: {
'pre-commit': 'lint-staged',
'commit-msg': 'commitlint -E HUSKY_GIT_PARAMS'
},
};
module.exports = {
'*.{json,css,scss,html}': ['prettier --write', 'git add'],
'*.md': ['prettier --write', 'markdownlint', 'git add'],
'*.js': ['eslint --fix', 'git add'],
};
{
"default": true,
"line-length": {
"line_length": 100,
"code_blocks": false,
"tables": false
}
}
package.json
package-lock.json
node_modules
build
dist
public
serviceWorker.js
!.*.js
// override to defer to airbnb style guide. One source of truth!
module.exports = {
singleQuote: true,
trailingComma: 'all',
printWidth: 100,
proseWrap: 'always',
bracketSpacing: true,
};
sudo: false
language: node_js
node_js: '8'
cache:
directories:
- ~/.npm
install: npm install
script:
- npm run lint:commit:ci
- npm run lint:md
- npm run lint
after_success:
- npx -p semantic-release@7 -c "semantic-release pre && npm publish && semantic-release post"
branches:
only: master
{
"scripts": {
"format": "npm run lint -- --fix",
"lint": "eslint .",
"lint:commit:ci": "commitlint-travis",
"lint:md": "markdownlint -i node_modules ."
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.