Coko Lint
This package provides everything that is needed to lint applications built by the Coko team. Features / libraries provided, along with their configuration:
- Eslint
- Stylelint
- Prettier
- Husky (to provide pre-commit hooks)
- Lint-staged (combined with husky, will run linters on staged code before it is commited)
- Commitlint (to lint the commit message itself)
- Commitizen (to provide the cli helper for the conventional commit standard)
To install:
yarn add --dev @coko/lint
You shouldn't need to install any other dependency.
Just follow the instructions below.
All files below should be added to the root folder of your project, unless otherwise specified, or if you have a specific reason not to.
Eslint
Add an .eslintrc.js
in your root folder:
const { eslint } = require("@coko/lint");
/**
* You can edit the eslint config file here.
*
* eg.
* eslint.rules['no-console'] = ['warn', { allow: ['error', 'warn'] }],
*/
module.exports = eslint;
Prettier
Add a .prettierrc.js
file:
const { prettier } = require("@coko/lint");
/**
* You can edit the config here:
*
* eg.
* prettier.semi = true
*/
module.exports = prettier;
Stylelint
Add a .stylelintrc.js
file:
const { stylelint } = require("@coko/lint");
/**
* You can edit the config here:
*
* eg.
* stylelint.rules['your-rule'] = true
*/
module.exports = stylelint;
Commitlint, Lint staged & Commitizen
commitlint
lints your commits to make sure it follows the conventional commits
specification. lint-staged
will run the linters on changes staged in git
.
These two will be executed every time a commit is made, with the help of husky
's
pre-commit
hook.
The following also adds commitizen
, an interactive cli tool to build valid
commits (run it with yarn cz
).
Create a .commitlintrc.js
file:
module.exports = {
extends: ["@commitlint/config-conventional"],
};
Add a .lintstagedrc.js
file:
const { lintstaged } = require("@coko/lint");
/**
* You can edit the config here:
*
* eg.
* lintstaged.linters['*.js'] = ['my-custom-linter']
*/
module.exports = lintstaged;
Create a .cz-config.js
file:
const { commitizen } = require("@coko/lint");
/**
* You can edit the config before you export it to suit your needs.
*
* eg.
* commitizen.scopes = [
* 'dashboard',
* 'team manager',
* 'api',
* 'models',
* '*'
* ]
*/
module.exports = commitizen;
Finally, add the following lines to your package.json
:
"scripts": {
"cz": "git-cz"
},
"config": {
"commitizen": {
"path": "cz-customizable"
}
},
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS && lint-staged"
}
}