An ESLint plugin with custom rules and shareable configuration for Nette-specific JavaScript and TypeScript linting.
npm install --save-dev @nette/eslint-plugin eslint
For TypeScript support, you will also need these additional dependencies:
npm install --save-dev typescript typescript-eslint
This plugin provides two custom rules to improve code quality:
- no-this-in-arrow-except: Prevents using
this
inside arrow functions with configurable exceptions - prefer-line-comments: Enforces line comments (
//
) over block comments (/* */
) for single-line comments
Add @nette/eslint-plugin
to your ESLint configuration.
// eslint.config.js
import nette from '@nette/eslint-plugin';
export default defineConfig([
{
extends: [nette.configs.recommended],
// ...your other config items
},
];
Import from typescript entrypoint:
// eslint.config.js
import nette from '@nette/eslint-plugin/typescript';
export default defineConfig([
{
extends: [nette.configs.typescript],
// ...your other config items
},
]);
export default defineConfig([
{
extends: [nette.configs.customize({
browser: true, // Include browser globals (default: true)
typescript: true, // Include TypeScript support (default: false)
})],
// ...your other config items
},
]);
// eslint.config.js
import nette from '@nette/eslint-plugin';
export default defineConfig([
{
plugins: {
'@nette': nette
},
rules: {
'@nette/no-this-in-arrow-except': 'error',
'@nette/prefer-line-comments': 'error'
},
},
]);
Prevents using this
in arrow functions with exceptions for specific cases. It has two modes:
-
Default mode (
allowNestedInFunction: false
):- Allows
this
in arrow functions only when they are callbacks in class methods or directly passed to function calls
- Allows
-
Opt-in mode (
allowNestedInFunction: true
):- Also allows
this
in arrow functions when nested within any regular function
- Also allows
Example configuration:
{
rules: {
'@nette/no-this-in-arrow-except': ['error', { allowNestedInFunction: true }]
}
}
Enforces the use of line comments (//
) instead of block comments (/* */
) for single-line comments.
Exceptions are made for:
- Multi-line block comments
- JSDoc comments (block comments starting with
*
)