0.0.11 • Published 9 months ago
eslint-plugin-shadow-plugin v0.0.11
eslint-plugin-shadow-plugin
plugin
This package is designed to manage and validate imports within a codebase that follows the Feature-Sliced Design methodology. Specifically, it enforces the following checks:
Relative Path Checking: The isPathRelative function determines whether a given path is relative. This helps the package filter out imports, ensuring it processes only absolute paths for validation.
Layered Architecture Control: The layers object sets rules on the hierarchy and dependencies among layers (such as app, pages, widgets, features, entities, and shared). These rules restrict imports across layers, preventing dependency violations. For example, the features layer can import from shared and entities but not the other way around.
Public API Enforcement: Within ImportDeclaration, the code validates absolute imports to check if they originate from the Public API (e.g., from index.ts). Importing modules outside of the Public API triggers a PUBLIC_ERROR, promoting a more structured and encapsulated project by minimizing cross-layer dependencies and hiding internal modules.
Testing Imports: For test data (such as testing), the package verifies that it is imported from a dedicated testing API (publicApi/testing.ts). If test data imports don’t adhere to this rule, it triggers a TESTING_PUBLIC_ERROR, ensuring uniformity and compliance in handling testing files.
Auto-Correction: The package can auto-fix certain import violations, aligning them with the prescribed architectural standards specified in the package settings.
Overall, this package functions as a linter to validate and manage imports, supporting architectural principles and maintaining a Feature-Sliced Design structure.
Installation
You'll first need to install ESLint:
npm i eslint --save-dev
Next, install eslint-plugin-shadow-plugin
:
npm install eslint-plugin-shadow-plugin --save-dev
Usage
Add shadow-plugin
to the plugins section of your .eslintrc
configuration
file. You can omit the eslint-plugin-
prefix:
{
"plugins": ["shadow-plugin"]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"shadow-plugin/rule-name": 2
}
}
Rules
TODO: Run eslint-doc-generator to generate the rules list.