openpencil/steiger.config.ts
2026-05-14 20:51:59 +03:00

43 lines
1.6 KiB
TypeScript

import fsd from '@feature-sliced/steiger-plugin'
import { defineConfig } from 'steiger'
import { openPencilArchitecturePlugin } from './scripts/steiger-rules.ts'
// OpenPencil is not laid out as canonical Feature-Sliced Design layers.
// Keep Steiger focused on project-specific architecture boundaries instead of
// enabling fsd.configs.recommended, which treats src/ and packages/ as FSD layer typos.
export default defineConfig([
fsd.plugin,
openPencilArchitecturePlugin,
{
ignores: [
'node_modules/**',
'dist/**',
'desktop/**',
'public/**',
'scratch/**',
'demo-recordings/**'
]
},
{
rules: {
'open-pencil/strict-test-file-placement': 'error',
'open-pencil/no-engine-only-assertions-in-e2e': 'error',
'open-pencil/no-e2e-imports-in-engine-tests': 'error',
'open-pencil/no-root-markdown-clutter': 'error',
'open-pencil/no-prototype-or-generated-imports': 'error',
'open-pencil/no-property-panel-imports-in-canvas': 'error',
'open-pencil/no-app-imports-in-workspace-packages': 'error',
'open-pencil/no-package-internals-in-app': 'error',
'open-pencil/no-foreign-package-local-aliases': 'error',
'open-pencil/no-app-imports-components-or-views': 'error',
'open-pencil/no-components-import-views': 'error',
'open-pencil/no-views-imported-outside-entry': 'error',
'open-pencil/no-non-ui-imports-in-shared-ui': 'error',
'open-pencil/no-app-imports-in-shared-ui': 'error',
'open-pencil/no-property-panel-internals-outside-panel': 'error',
'open-pencil/no-ui-imports-in-core': 'error'
}
}
])