@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
28
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-nodeMake 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 chalkIntegration 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 huskyDefine 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-stagedDefine 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