This plugin helps to enforce import constraints according to the Onion Architecture.
The examples use the following config:
{
"rules": {
"onion-imports/onion-imports": [
"warn",
{
"layers": [
[
{ "name": "UI", "patterns": ["src/ui/"] },
{ "name": "Data Access", "patterns": ["src/data-access/"] }
],
{ "name": "Business Logic", "patterns": ["src/business-logic/"] },
{ "name": "Object Model", "patterns": ["src/object-model/"] }
]
}
]
}
}
Examples of incorrect code for this rule:
// src/object-model/foo.js:
import bar from "../ui/bar.js";
// src/data-access/baz.js:
import qux from "../ui/qux.js";
Examples of correct code for this rule:
// src/ui/foo.js:
import bar from "../business-logic/bar.js";
// src/business-logic/baz.js:
import qux from "../object-model/qux.js";