0.3.4 • Published 3 years ago
@technote-space/eslint-plugin-strict-dependencies v0.3.4
eslint-plugin-strict-dependencies
ESlint plugin to define custom module dependency rules.
NOTE: eslint-plugin-strict-dependencies uses tsconfig, tsconfig.json must be present.
Table of Contents
Installation
npm install @technote-space/eslint-plugin-strict-dependencies --save-devSupported Rules
- strict-dependencies
- module:
string(Glob or Forward matching string)- target module path
- allowReferenceFrom:
string[](Glob or Forward matching string)- Paths of files where target module imports are allowed.
- allowSameModule:
boolean- Whether it can be imported by other files in the same directory
- allowTypeImport:
boolean- Whether to allow type import
- module:
Options
- resolveRelativeImport:
boolean[default = false]- Whether to resolve relative import as in the following example
src/components/aaa.tsimport bbb from './bbb';./bbb:resolveRelativeImport = falsesrc/components/bbb:resolveRelativeImport = true
- allowTypeImport:
boolean- Whether to allow type import
Usage
.eslintrc:
"plugins": [
"@technote-space/strict-dependencies",
],
"rules": {
"@technote-space/strict-dependencies/strict-dependencies": [
"error",
[
/**
* Example:
* Limit the dependencies in the following directions
* pages -> components/page -> components/ui
*/
{
"module": "src/components/page",
"allowReferenceFrom": ["src/pages"],
// components/page can't import other components/page
"allowSameModule": false,
"allowTypeImport": true
},
{
"module": "src/components/ui",
"allowReferenceFrom": ["src/components/page"],
// components/ui can import other components/ui
"allowSameModule": true
},
/**
* example:
* Disallow to import `next/router` directly. it should always be imported using `libs/router.ts`.
*/
{
"module": "next/router",
"allowReferenceFrom": ["src/libs/router.ts"],
"allowSameModule": false
},
],
// options
// {
// "resolveRelativeImport": true,
// "allowTypeImport": true
// }
]
}License
MIT