1.0.8 • Published 4 years ago

@unitario/eslint-config v1.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

Unitario ESLint Configuration

The package provides base ESLint configurations for Unitario. It follows a set of recommended style guidelines for writing code that is more performant and easier to reason about.

This package use ESLint to run Prettier.

What it does

  • Lints JavaScript or TypeScript based on latest standards
  • Follows a mostly reasonable approach by Airbnb
  • Fixes common code errors and style issues

Installation

1. Install dependencies

Development

npm install @unitario/eslint-config --save-dev

Peer

In case peer dependencies has not already been installed, make sure to install these too:

npm install eslint prettier --save-dev

Optional

  • jest – Test framework. Configuration files has already loaded in this package.
  • ramda – Functional utility library. Configuration files has already loaded in this package.
  • lint-stagedUsed to enable allow ESLint to run on staged files.
  • huskyUsed to enable allow ESLint to run on staged files.

Use them if you project requires it. If so then configuration files has already been bundled in this package. Just make sure that they have been installed in your project.

2. Create config file

Create an .eslintrc file at the root of your project with this content:

{
  "extends": "@unitario"
}

Rules

Extends

This configuration package follows a specific list of configuration rules. Each configuration overwrites the previous configuration in the case of conflicting rules.

  1. Airbnb ESLint Base Config – Base ruleset for JavaScript files
  2. TypeScript ESLint Recommended Config – Base ruleset for TypeScript files
  3. Jest ESLint Recommended Config – Base ruleset for Jest spec-files
  4. Prettier ESLint Config – Turns off all rules that are unnecessary or might conflict with Prettier

Enforced Rules

This configuration package makes a couple of opinionated style rules which overwrites any rules provided in the extends array.

  • Print Width. Line wrap at 140 characters (default is 80).
  • Tab Width. Tab with is 2 spaces (default is 4).
  • Semicolons. Never print semicolons in end of statements (default is always).

Overriding Rules

If you'd like to override any rules, you can add the rules to your .eslintrc file.

{
  "extends": "@unitario",
  "rules": {
    "no-console": "off"
  }
}

Code Editor Integrations

Visual Studio Code

  1. Install the ESLint Extension
  2. Reload Visual Studio Code
  3. Modify your settings.json file

Disable built in formatting

"editor.formatOnSave": false

ESLint will handle formatting and code linting

"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true
}

Make tools that could conflict with ESLint has been disabled

"tslint.enable": false
"prettier.enable": false

Pre-Commit Hook

You may want ESLint to automatically fix your errors on commit, you can use lint-staged with husky, which manages git hooks.

  1. Install dependencies
    • npm install lint-staged husky --save-dev
  2. Update package.json:
{
  "lint-staged": {
    "*.{js,ts,json}": ["eslint --fix", "git add"]
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  }
}

Troubleshooting

ESLint couldn't find config or plugin referenced by the configuration file in this package.

As of ESLint version 6 plugins and shareable configs are no longer affected by ESLint's location. ESLint will look for for these packages relative to the working directory (cwd) path. In some circumstances this might not be the case.

You can read more about this and how to resolve this in the ESLint version 6 migration guide.