📓 Lint feature-driven rules by standard eslint plugins
npm install @feature-driven/eslint-configts
// 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
`
ts
// 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
`
`ts
// 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";
`
sh
$ npm install --save-dev eslint
`
2. Next, install @feature-driven/eslint-config:
`sh
$ 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"]
}
``