Configuration
Configuration files are gherkin-refine.config.js, gherkin-refine.config.mjs, gherkin-refine.config.ts, and gherkin-refine.config.json. The first matching file is searched from the working directory upward. Existing gherkinlint.config.* files are still discovered. Without a native file in the working directory, a .gherkin-lintrc there is converted in memory, without the recommended preset. Use --config to select a specific file. A .gherkin-lintignore file in the working directory adds its non-empty lines to ignores. A file named directly on the command line or passed to lintFiles is linted even when ignores matches it; directories and glob patterns skip ignored files.
The recommended preset is enabled when no extends field is provided. Set extends: [] to disable preset rules. Rule severities are off, warn, and error, or their numeric forms 0, 1, and 2. A rule can include options as [severity, options].
import { defineConfig } from "gherkin-refine";
export default defineConfig({
extends: ["recommended"],
rules: {
"scenario-size": ["warn", { maxSteps: 12 }]
},
overrides: [
{
files: ["legacy/**/*.feature"],
rules: { "scenario-size": "off" }
}
],
ignores: ["generated/**/*.feature"],
reportUnusedDisableDirectives: true,
maxConcurrency: 8,
maxFixPasses: 10
});no-duplicate-feature-names and no-duplicate-scenario-names are project rules: they check all files together. An override can change their severity for some files, but their options, such as scope, come from the first file, in path order, where the rule is enabled. See project rules.
TypeScript config files run through Node's native type stripping on the supported runtime. Use erasable syntax only. Node does not apply tsconfig transforms, path aliases, or type checking when loading a config file.
Inline suppression
Comments support gherkin-refine-disable-next-line, gherkin-refine-disable-line, gherkin-refine-disable-file, gherkin-refine-disable, and gherkin-refine-enable. The previous gherkinlint-* forms remain accepted. Use comma or whitespace separated rule IDs. A reason follows --.
# gherkin-refine-disable-next-line name-length -- historical user-facing phrase
Scenario: A deliberately long scenario name# gherkin-refine-disable scenario-size
Scenario: Legacy scenario
Given the existing steps remain unchanged
# gherkin-refine-enable scenario-sizeRun with --report-unused-disable-directives or set reportUnusedDisableDirectives: true to report suppressions that matched no diagnostics. The rule unused-disable-directive accepts warn, error, or off severity.
Configuration and plugin files execute as trusted JavaScript. They are not sandboxed.