Examples
Basic usage
The file .gitignore must inline a line with the content /dist/
.
style = "style.json"
/dist/
{
"rules": [
{
"files": [".gitignore"],
"includeLines": ["/dist/"]
}
]
}
Project config self configuration
Asserts that project-config is defining a valid configuration,
forcing the definition of styles
as an array for styles and
a valid cache
value.
style = ["style.json5"]
cache = "5 minutes"
{
rules: [
{
files: [".project-config.toml"],
JMESPathsMatch: [
// `style` must be defined in the file
["contains(keys(@), 'style')", true],
// `style` must be an array
["type(style)", "array"],
// at least one style configured
["op(length(style), '>', `0`)", true],
// configure cache explicitly
["contains(keys(@), 'cache')", true],
// cache must have a valid value
[
"regex_match('^(\\d+ ((seconds?)|(minutes?)|(hours?)|(days?)|(weeks?)))|(never)$', cache)",
true,
],
],
},
],
}
Files absence
The files readme.md and index.md must not exist.
style = "style.yaml"
rules:
- files:
not:
readme.md: Users expect are more used to seeing README.md file name in uppercase
hint: Rename 'readme.md' to 'README.md'
- files:
not:
- index.md
Conditionals
If .gitignore includes the line __pycache__/
a pyproject.toml
file must be present.
style = "style.json"
__pycache__/
{
"rules": [
{
"ifIncludeLines": {
".gitignore": ["__pycache__/"]
},
"files": ["pyproject.toml"]
}
]
}
Tip
For more complex examples check my own styles at mondeja/project-config-styles.