eslint-config-codecraft v1.0.0
Codecraft ESLint config
ESLint config which sets up EditorConfig + Prettier to run as part of the linting process. It also automatically sorts imports and adds a few opinionated linting rules.
Install
npm i -D eslint-config-codecraftUsage
Add an
.editorconfigfile in the project root.For example, to use UTF-8 encoding with Unix style newlines, 4 space indentation, and strict whitespace formatting:
root = true [*] indent_style = space indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 80Optionally add a
.prettierrcfile in the project root to configure any options which are not inherited from EditorConfig.For example, to omit semicolons and use single quotes for strings:
{ "semi": false, "singleQuote": true }Add
codecraftas the last extension in your.eslintrc.json:{ "extends": [ // ... "codecraft" ] }
Linting rules
A few opinionated rules have been introduced to improve consistency with idioms in other programming languages, and reduce developers' cognitive load when switching between them.
Strict equality
This rule prohibits the usage of loose equality operators to avoid ambiguity and potential errors.
// GOOD
foo === bar
foo !== bar// BAD
foo == bar
foo != barRationale:
Block scoped variables
This configuration prohibits usage of var due to its unintuitive scoping, and enforces usage of block scoped variables. However, unlike common recommendations, it favors let keyword instead of const in almost all cases, to improve semantics and consistency with other mutable storage (function arguments, object properties).
// GOOD
const TOP_LEVEL_CONSTANT = "foo"
let topLevelVariable = "bar"
function nestedScope() {
let nestedVariable = "baz"
}// BAD
function nestedScope() {
const NESTED_CONSTANT = "foo"
}Rationale:
Tips
Pre-commit hook
Format files via NPM's Git pre-commit hook in package.json:
{
"scripts": {
"precommit": "eslint"
}
}Automatic formatting
If using VSCode, install the official ESLint extension and add the following options to your project settings to automatically format files on save:
{
"editor.formatOnSave": true,
"eslint.format.enable": true,
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
}
}3 years ago