Quick start
After installing, the fastest way to get a feel for ignition-lint is to point it at a view file with the default rule set.
Lint a single file
ign-lint path/to/view.json
With no --config flag, the tool runs every registered rule with default options.
Lint many files
ign-lint --files "**/view.json"
The --files flag accepts glob patterns. Quote the pattern so the shell doesn't expand it before ignition-lint sees it.
Use a configuration file
Create rule_config.json in your project root:
{
"NamePatternRule": {
"enabled": true,
"kwargs": {
"convention": "PascalCase",
"target_node_types": ["component"]
}
},
"PollingIntervalRule": {
"enabled": true,
"kwargs": {
"minimum_interval": 10000
}
},
"PylintScriptRule": {
"enabled": true
}
}
Run with the config:
ign-lint --config rule_config.json --files "**/view.json"
See Configuration for the full schema.
Verbose mode
--verbose adds per-file timing, ignored-file lists, and rule-coverage statistics:
ign-lint --config rule_config.json --files "**/view.json" --verbose
Stats only (no rules)
--stats-only skips rule execution and just prints model statistics — useful when developing rules or auditing what's in a view:
ign-lint --files "**/view.json" --stats-only
Output
A typical successful run with no violations exits 0 and prints:
No issues found
Violations look like this (warnings exit 0 by default; errors exit 1):
Found 2 errors in views/dashboard/view.json:
PollingIntervalRule (error):
• root.Container.props.text.binding: 'now(5000)'
NamePatternRule (warning):
• root.Container.children[0].my_button: Name 'my_button' doesn't follow PascalCase for component (suggestion: 'MyButton')
Summary:
Total issues: 2
Next
- Configuration — full rule and severity reference
- Pre-commit integration — block bad views at commit time
- GitHub Actions — fail CI on rule violations