@e9ine/eslint-config-node
v1.0.0
Published
This package provides e9ine's .eslintrc as an extensible shared config. This is only meant to be used on backend Node projects.
Downloads
7
Readme
@e9ine/eslint-config-node
This package provides e9ine's .eslintrc as an extensible shared config
Usage
We export 1 ESLint configurations for your usage which already inherits eslint-recommended config. So you do not need to extend eslint:recommended
Our default export contains all of our ESLint rules, including ECMAScript 6+ . It has its peer dependencies eslint so you do not require to install eslint
separately
Installation
Install the correct and latest version of the package
npm install --save-dev @e9ine/eslint-config-node
Make sure to extend the configurations to package.json
... "devDependencies": { ... "@e9ine/eslint-config-node": "^1.0.0" }, "eslintConfig": { "root": true, "extends": [ "@e9ine/eslint-config-node" ] }
Add below two scripts for lint and lint-fix
... "scripts": { ... "lint": "eslint --ignore-path .gitignore .", "lint-fix": "eslint --ignore-path .gitignore . --fix" }, ...
Integration with chalk
chalk
must be added to make sure error messages are prompted properly.
npm install --save-dev chalk
Integration with husky
husky
can be integrated with the projects based on the team size. However we highly recommend to use husky
Install husky as dev dependency
npm install --save-dev husky
Define husky config in package.json
... "husky": { "hooks": { "pre-commit": "npm run lint" } }
Integration with lint-staged
lint-staged
can be highly effective when you only would want to run linters on staged-files. This will also prevent the user from committing code which is not in compliance with the standards and specified formatting.
However we highly recommend to use lint-staged in combination with husky if you are working in a team consisting more than 2 members.
Install lint-staged, chalk, husky as dev dependency
npm install --save-dev lint-staged
Define lint-staged config in package.json
"husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "*.js": [ "./node_modules/.bin/eslint --fix", "git add" ] }
--fix option will try to fix the formatting and fixable errors. If there are still any "manual-only-fixable" error found, then commit will be rejected.
Add scripts folder to root of the folder and copy below files.
- verifyCommit.js
/* eslint no-console: 0 */
const chalk = require('chalk');
const msgPath = process.env.HUSKY_GIT_PARAMS;
const msg = require('fs')
.readFileSync(msgPath, 'utf-8')
.trim();
const commitRE = /^(revert: |Merge.+)|(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|chore|types|wip|merge)(\(.+\))?: .+/;
if (!commitRE.test(msg)) {
console.error(` ${chalk.bgRed.white(' ERROR ')} ${chalk.red('invalid commit message format.')}\n\n`);
process.exit(1);
}
- verifyUntrackable.js
/* eslint no-console: 0 */
const chalk = require('chalk');
console.log(process.argv);
if (process.argv[0]) {
console.error(
` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(
'config.js must not be trackable.'
)}\n\n`
);
process.exit(1);
}
How to use
npm run lint // shows errors
npm run lint-fix // fixes the errors