GPLint v2 released
We are proud to release the v2 of GPLint today.
This release comes with a lot of effort to improve things and bring all the new features of Gherkin syntax.
New features
Load custom rules with .mjs and .cjs
Now we support loading custom rules with mjs and cjs extensions, and the TypeScript equivalents, mts and cts.
Gherkin's Rule support added to all rules
From this new version, we added support to all rules to use Gherkin's Rule node. The following rules has new configuration options related with Gherkin's Rule node:
allow-all-caps: Added "rule" levelallow-all-lowercase: Added "rule" levelno-dupe-scenario-names: Addedin-ruleandin-rule-compileconfig.required-tags: Added "rule" level and extendRule option.
Improved rule no-restricted-patterns
The rule no-restricted-patterns has new configuration options:
Examples:ExampleHeader:ExampleBody:DocString:DataTable:
Now you are able to set patters to "Examples", "ExampleHeader" and "ExampleBody"
{
"no-restricted-patterns": ["error", {
"Examples": [
"poor examples name",
"really bad examples description"
],
"ExampleHeader": [
"^.*disallowed.*$"
],
"ExampleBody": [
"^.*invalid.*$"
]
}]
}
DocStrings and DataTable
Now you are able to set patters to "Examples", "ExampleHeader" and "ExampleBody"
Rules improvements: Improve no-restricted-patterns: Support Example, ExampleHeader and ExampleBody. Support DocString and DataTable from Steps with it own configuration key (check README.md).
Bug fixes
no-partially-commented-tag-lines
Fix no-partially-commented-tag-lines rule, detecting comments separated from tag (configurable). Refer to its own documentation page to know how to configure it.
Breaking changes
Removed deprecated "on" config
To follow the way other linting tools work, like eslint, we removed the "on" option as a valid config level. It should be replaced with a level string, "error" or "warn".
required-tags, remove deprecated tags option
On rule required-tags the tags config was renamed to scenario, to avoid confusions with the other levels (global,
feature, example, etc.).
// v1
{
"required-tags": ["error", {"tags": [["@ready", "@manual", "@wip"]]}]
}
// v2
{
"required-tags": ["error", {"scenario": [["@ready", "@manual", "@wip"]]}]
}
// v1
{
"no-files-without-scenarios": "on",
"file-name": ["on", {"style": "PascalCase"}]
}
// v2
{
"no-files-without-scenarios": "warn",
"file-name": ["error", {"style": "PascalCase"}]
}
Project updates
Dropped Node.js v14 and v16 support
We are discontinuing support for older and unmaintained Node.js versions. GPLint v2 will no longer support Node.js v16 and below. We recommend users upgrade to Node.js v20.
Added Node.js v20 and v22 support
We are adding support latest Node 20 (not limited to 20.4 anymore) and 22.
CommonJS to ESM Transition
We transitioned to the new Node.js module system, with a big rework of our code. It should not affect if using GPLint as a cli tool, if you have problems with integration, please, first read this
