# `wip` [@feature-driven/eslint-plugin](https://www.npmjs.com/package/@feature-driven/eslint-plugin)

[npm]: https://www.npmjs.com/package/@feature-driven/eslint-plugin

[![npm](https://img.shields.io/npm/v/@feature-driven/eslint-plugin?style=flat-square)][npm]
[![npm](https://img.shields.io/npm/dw/@feature-driven/eslint-plugin?style=flat-square)][npm]
[![npm bundle size](https://img.shields.io/bundlephobia/min/@feature-driven/eslint-plugin?style=flat-square)][npm]
[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Ffeature-driven%2Feslint-plugin&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=true)](https://hits.seeyoufarm.com)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/feature-driven/eslint-plugin/Test%20current%20build?label=tests&style=flat-square)](https://github.com/feature-driven/eslint-plugin/actions)
[![GitHub commit activity](https://img.shields.io/github/commit-activity/m/feature-driven/eslint-plugin?style=flat-square)](https://github.com/feature-driven/eslint-plugin/commits)

> **DISCLAIMER**: Work in process, and accordingly:
> - Here is **approximate** description
> - First stable version will be signed as **`0.1.0`**
> - For a while - you can try *simplified linting* by [@feature-driven/eslint-config](https://github.com/feature-driven/eslint-config)

<!-- TODO: add badges -->

<img src="https://avatars3.githubusercontent.com/u/74538205?s=120&v=4" align="right">

Linting of [Feature Driven Development](https://github.com/feature-driven/wiki) principles

- Control **Decentralization**
- Control **Co-location**
- Control **Explicit sharing**
- Control **Decoupling && isolating**
- Control **Disposability**

<!-- TODO [**Propose or contribute a new rule ➡**](.github/contributing.md) -->

<!-- Uncomment if will be needed
## Table of contents

   TODO* [Overview](#overview)
   * [Installation](#installation)
   * [Usage](#usage)
   * [Supported Rules](#supported-rules)
   * [Also](#also)
-->
<!-- TODO: ## Overview -->


## Get started

1. You'll first need to install [ESLint](http://eslint.org):
    ```sh
    $ npm i eslint --save-dev
    ```

2. Next, install `@feature-driven/eslint-plugin`:
    ```sh
    $ npm install --save-dev @feature-driven/eslint-plugin
    ```

3. Add `@feature-driven/eslint-plugin` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin` suffix:
    ```json
    {
        "plugins": ["@feature-driven"]
    }
    ```

4. Then configure the rules you want to use under the rules section.
    ```json
    {
        "rules": {
            "@feature-driven/rule-name": 2
        }
    }
    ```

## Rules
> See [full list: with implemented and planned rules](/docs/README.md)

[r:explicit-abstractions]: https://github.com/feature-driven/eslint-plugin/blob/master/docs/rules/explicit-abstractions.md

- [`explicit-abstractions`][r:explicit-abstractions] - Restrict allowed-list of project abstractions in src (app/features/pages/shared)
   > This rule aims to specify and unify *feature-driven* project structure

## Also
- [FAQ](./FAQ.md)
- [Releases & Changelog](https://github.com/feature-driven/eslint-plugin/releases)
- **How can you help?**
  - ⭐ Rate us on GitHub, if it's worth on your opinion 
    > And if this solution must keep to developing
  - 💫 Have a look at our [contributing](./CONTRIBUTING.md) guide
    > **Everything is matter** - from *feedback* to *participating* in development!
    >
    > *Commit like nobody sees, Push like nobody hears*


⠀
⠀
⠀
> *Repo organizing inspired by [feature-driven/template-github](https://github.com/feature-driven/template-github)*
