AxiomCode
AI 소프트웨어 엔지니어링을 위한 검증 가능한 인텔리전스, 형식화된 코드 그래프 기반
JavaScript·TypeScript 프로젝트에 아키텍처 경계를 적용합니다
Enforce architectural boundaries in your JavaScript and TypeScript projects
플러그인TypeScript · MDXGitHub @javierbrea직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Enforce architectural boundaries in your JavaScript and TypeScript projects.
ESLint Plugin Boundaries is an ESLint plugin that helps you maintain clean architecture by enforcing boundaries between different parts of your codebase. Define your architectural layers, specify how they can interact, and get instant feedback when boundaries are violated.
The full documentation is available on the JS Boundaries website.
Install the plugin using npm:
npm install eslint eslint-plugin-boundaries --save-dev
Define your architectural elements:
import boundaries from "eslint-plugin-boundaries";
export default [
{
plugins: { boundaries },
settings: {
"boundaries/elements": [
{ type: "controller", pattern: "controllers/*" },
{ type: "model", pattern: "models/*" },
{ type: "view", pattern: "views/*" }
],
"boundaries/files": [
{ category: "test", pattern: "**/*.test.js" }
]
}
}
];
Define your dependency rules:
{
rules: {
"boundaries/dependencies": [2, {
default: "disallow",
policies: [
// Allow controllers to depend on models and views
{
from: { element: { type: "controller" } },
allow: {
to: { element: { types: { anyOf: ["model", "view"] } } },
},
},
// Allow views to depend on models
{
from: { element: { type: "view" } },
allow: {
to: { element: { type: "model" } },
},
},
// Disallow any element from importing a test file
{
disallow: {
to: { file: { categories: "test" } },
},
},
// Only controllers may use the `axios` package
{
from: { element: { type: "!controller" } },
disallow: {
to: { module: { origin: "external", source: "axios" } },
},
},
]
}]
}
}
Now ESLint will catch violations:
// In src/models/model/index.js
import View from "../../views/view"; // ❌ Error: Architectural boundary violated
To everyone who has opened an issue, suggested improvements, fixed bugs, added features, or improved documentation: Thank you. Your contributions, no matter how small, make a real difference. Every bug report helps us improve, every feature request guides our roadmap, and every pull request strengthens the project.
Special recognition goes to those who have contributed code to the project. Your technical contributions are the foundation of what makes this plugin valuable to the community.
Want to contribute? We'd love to have you! Here are some ways to get involved:
MIT © javierbrea