Skip to main content

Configuration

ArchiCore can be configured through configuration files and environment variables.

Configuration Files

Project Configuration

Located at .archicore/config.json in your project root:

{
"project": {
"name": "my-project",
"description": "My awesome project"
},
"index": {
"include": ["src/**/*", "lib/**/*"],
"exclude": ["node_modules", "dist", "*.test.ts"],
"languages": ["typescript", "javascript"]
},
"analysis": {
"maxFileSize": 1048576,
"maxFiles": 10000
},
"rules": {
"enabled": true,
"configPath": ".archicore/rules.json"
}
}

Global Configuration

Located at ~/.archicore/config.json:

{
"api": {
"baseUrl": "https://api.archicore.io/api",
"timeout": 30000
},
"cli": {
"theme": "dark",
"language": "en"
}
}

Configuration Options

Index Options

OptionTypeDefaultDescription
includestring[]["**/*"]Glob patterns to include
excludestring[]["node_modules"]Glob patterns to exclude
languagesstring[]autoLanguages to index
maxFileSizenumber1048576Max file size in bytes
maxFilesnumber10000Max files to index

Analysis Options

OptionTypeDefaultDescription
complexity.thresholdnumber10Cyclomatic complexity warning threshold
duplication.minLinesnumber5Min lines for duplication detection
security.enabledbooleantrueEnable security scanning

Environment Variables

VariableDescription
ARCHICORE_API_KEYAPI key for authentication
ARCHICORE_API_URLCustom API endpoint
ARCHICORE_DEBUGEnable debug logging
ARCHICORE_NO_COLORDisable colored output

Architecture Rules

Define custom architecture rules in .archicore/rules.json:

{
"rules": [
{
"id": "no-circular-deps",
"name": "No Circular Dependencies",
"description": "Prevent circular dependencies between modules",
"type": "dependency",
"severity": "error",
"config": {
"maxDepth": 3
}
},
{
"id": "layer-isolation",
"name": "Layer Isolation",
"description": "Enforce layer boundaries",
"type": "import",
"severity": "warning",
"config": {
"layers": {
"controllers": ["services"],
"services": ["repositories", "utils"],
"repositories": ["models"]
}
}
},
{
"id": "naming-convention",
"name": "Naming Convention",
"description": "Enforce naming standards",
"type": "naming",
"severity": "info",
"config": {
"patterns": {
"service": ".*Service$",
"controller": ".*Controller$",
"repository": ".*Repository$"
}
}
}
]
}

Ignoring Files

Create .archicoreignore in your project root (similar to .gitignore):

# Dependencies
node_modules/
vendor/

# Build output
dist/
build/
*.min.js

# Tests
**/*.test.ts
**/*.spec.ts
__tests__/

# Generated
*.generated.ts
*.d.ts

# Large files
*.sql
*.csv

Precedence

Configuration is merged in this order (later overrides earlier):

  1. Default values
  2. Global config (~/.archicore/config.json)
  3. Project config (.archicore/config.json)
  4. Environment variables
  5. Command line flags