npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@nette/eslint-plugin

v0.2.2

Published

Nette-specific ESLint rules and config

Downloads

153

Readme

@nette/eslint-plugin

npm version License

An ESLint plugin with custom rules and shareable configuration for Nette-specific JavaScript and TypeScript linting, including support for Latte template files.

Installation

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

For Latte template support (HTML files with embedded JavaScript), you will also need:

npm install --save-dev eslint-plugin-html

 <!---->

Features

This plugin provides custom rules and configurations to improve code quality:

Custom Rules

  • 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

Latte Template Support

  • Latte Processor: Processes Latte template files to lint JavaScript code within templates
  • File Type Support: .js.latte, .css.latte, .txt.latte, .latte files
  • n:syntax="off": Respects syntax disable attribute in HTML elements

 <!---->

Usage

Add @nette/eslint-plugin to your ESLint configuration.

Using Recommended Configuration

// eslint.config.js
import nette from '@nette/eslint-plugin';
import { defineConfig } from 'eslint/config';

export default defineConfig([
	{
		extends: [nette.configs.recommended],
		// ...your other config items
	},
]);

Using Latte Configuration

The eslint-plugin-html plugin is used to check JavaScript inside <script> tags in HTML pages. This package provides you with a preprocessor that allows you to use Latte tags inside JavaScript, for example:

<script>
let name = {$name};
</script>

Use this configuration:

import nette from '@nette/eslint-plugin';
import pluginHtml from 'eslint-plugin-html';
import { defineConfig } from 'eslint/config';

export default defineConfig([
	{
		files: ['app/**/*.latte'],

		plugins: {
			html: pluginHtml,       // Enables eslint-plugin-html
		},
		processor: '@nette/latte',  // Enabled Latte preprocessor
	},
]);

Using TypeScript Configuration

Import from typescript entrypoint:

import nette from '@nette/eslint-plugin/typescript';

export default defineConfig([
	{
		extends: [nette.configs.typescript],
		// ...your other config items
	},
]);

Customizing Configuration

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
	},
]);

Using Rules

import nette from '@nette/eslint-plugin';
import { defineConfig } from 'eslint/config';

export default defineConfig([
	{
		plugins: {
			'@nette': nette
		},

		rules: {
			'@nette/no-this-in-arrow-except': 'error',
			'@nette/prefer-line-comments': 'error'
		},
	},
]);

 <!---->

Rule Details

no-this-in-arrow-except

Prevents using this in arrow functions with exceptions for specific cases. It has two modes:

  1. Default mode (allowNestedInFunction: false):

    • Allows this in arrow functions only when they are callbacks in class methods or directly passed to function calls
  2. Opt-in mode (allowNestedInFunction: true):

    • Also allows this in arrow functions when nested within any regular function

Example configuration:

{
	rules: {
		'@nette/no-this-in-arrow-except': ['error', { allowNestedInFunction: true }]
	}
}

prefer-line-comments

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 *)