Skip to content

yola/eslint-plugin-yola

Repository files navigation

eslint-plugin-yola

An eslint plugin to lint Yola's javascript.
ES6 code style is based on Airbnb Javascript Style Guide.

Installation

Install eslint and plugin package with npm as development dependencies:

npm install --save-dev eslint eslint-plugin-yola

Usage

There are two configurations available:

  • yola/base - based on eslint-config-airbnb-base - used to lint ES6 code
  • yola/react - based on eslint-config-airbnb - used to lint React components code
  • yola/typescript - based on @typescript-eslint/eslint-plugin - used to lint type script code
  • yola/prettier - an eslint-config-prettier to avoid conflicts using prettier

Configuration

Create config file in the root of your project .eslintrc.js that extends eslint-plugin-yola:

module.exports = { extends: 'plugin:yola/base' };

Note: configs are depend on eslint plugins import, react, jsx-a11y. In order to avoid usage conflicts, rules that extracted from these plugins are prefixed with yola/. So if you need to override some rules you must use prefix. eg override of react/no-string-refs

module.exports = {
  extends: 'plugin:yola/react',
  rules: {
    'yola/react/no-string-refs': 'warn',
  },
};

Run

With npm scripts:

"lint": "eslint ./src/**/*.js"

FAQ

Why eslint?

We were using jshint and found it too restrictive. We wanted to extend from other style guides.
Another reason to have eslint is a JSX support.

Why a plugin?

The plugin solves problem of shareable eslint configs that depend on eslint plugins, which described in eslint/eslint#3458.
Basically, to resolve eslint plugins dependencies this plugin wraps eslint-config-airbnb, eslint-config-airbnb-base rules with extracted rules from plugins.
The approach was inspired by eslint-plugin-react-app