Skip to content

Latest commit

 

History

History
51 lines (39 loc) · 1.14 KB

onion-imports.md

File metadata and controls

51 lines (39 loc) · 1.14 KB

Disallow imports from outer layers (onion-imports)

Rule Details

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";

Further Reading