json_path_matches
Same shape as the *_equals variants, but the asserted value is a regex matched against string values. Non-string matches produce a clear “value is not a string” violation.
Options
Section titled “Options”| Option | Type | Required | Default | Description |
|---|---|---|---|---|
if_present | boolean | false | When true, a query returning zero matches is silently OK - only real matches that fail the op produce violations. | |
matches | string | yes | Rust-regex pattern to match against the value at path. | |
path | string | yes | JSONPath expression rooted at $. |
Plus the common paths, level, id, and when fields. This table is generated from the JSON Schema; option types and defaults are authoritative.
Example
Section titled “Example”A package version that is not valid semver
Section titled “A package version that is not valid semver”The rule fires on this repository:
packages/packages/bad/packages/bad/package.jsonpackages/ok/packages/ok/package.json{"name": "@demo/bad", "version": "not-a-semver"}{"name": "@demo/ok", "version": "1.2.3"}With this .alint.yml:
version: 1rules: - id: require-semver-version kind: json_path_matches paths: "packages/*/package.json" path: "$.version" matches: '^\d+\.\d+\.\d+$' level: erroralint check reports:
--- packages/bad/package.json -------------------------------------------------- x error require-semver-version value at path "not-a-semver" does not match regex ^\d+\.\d+\.\d+$
Summary (1 violation): x 1 error 0 passing * 1 failingEvery package version is valid semver
Section titled “Every package version is valid semver”This repository is compliant:
packages/packages/a/packages/a/package.jsonpackages/b/packages/b/package.json{"name": "@demo/a", "version": "1.2.3"}{"name": "@demo/b", "version": "0.10.0"}With this .alint.yml:
version: 1rules: - id: semver-versions kind: json_path_matches paths: "packages/*/package.json" path: "$.version" matches: '^\d+\.\d+\.\d+$' level: warningalint check reports:
v All 1 rule(s) passed.