0.1.1 • Published 3 years ago
@feature-driven/eslint-config v0.1.1
@feature-driven/eslint-config
Linting of Feature Driven Architecture principles by standard eslint-plugins
- Control Co-location
- Control Decoupling && isolating
But unfortunately, while it can't allow you
- to control Decentralization
- to control Explicit sharing
- to control Disposability
Also, strictness level limited by plugins API
More power - in our @feature-driven/eslint-plugin
Overview
See included rules
This config help you
// Fail
import { Issues } from "pages/issues";
import { IssueDetails } from "features/issue-details"
import { Button } from "shared/components/button";
// Pass
import Routing from "pages"; // specific pages shouldn't be reexported
import { IssueDetails } from "features" // all features should be reexported, for usage
import { Button } from "shared/components"; // all components should be reexported, for usage
// Fail
import { Helper } from "./helpers";
import axios from "axios";
import { data } from "../fixtures";
import { Button } from "shared/components"
import { IssueDetails, RepoList } from "features"
import { debounce } from "shared/helpers"
// Pass
import axios from "axios"; // 1) external libs
import { IssueDetails, RepoList } from "features" // 2) features
import { Button } from "shared/components" // 3) shared/**
import { debounce } from "shared/helpers"
import { data } from "../fixtures"; // 4) parent
import { Helper } from "./helpers"; // 5) sibling
NOTE: Be sure, that your tsconfig allows you to use absolute imports
baseUrl: "./src"
// Fail import Routing from "../../pages" import { IssueDetails } from "../features"; import { Button } from "../shared/components";
// Pass import Routing from "pages" import { IssueDetails } from "features"; import { Button } from "shared/components";
</details>
## Get started
1. You'll first need to install [ESLint](http://eslint.org) (with default plugins):
```bash
$ npm install --save-dev eslint
```
2. Next, install `@feature-driven/eslint-config`:
```bash
$ npm install --save-dev @feature-driven/eslint-config
```
3. Add config to the `extends` section of your eslint configuration file. You can omit the `eslint-plugin` suffix:
```json
{
"extends": ["@feature-driven"]
}
```
> Further, you can override / disable some rules if needed.
## Also
- You want to participate in the development of the project? Have a look at our [contributing](./CONTRIBUTING.md) guide!
> Commit like nobody sees, Push like nobody hears
- [FAQ](./FAQ.md)