Skip to content

Yash-Singh1/eslint-plugin-userscripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eslint-plugin-userscripts

Implements rules for userscripts in eslint.

Installation

You'll first need to install ESLint:

npm install eslint --save-dev

Next, install eslint-plugin-userscripts:

npm install eslint-plugin-userscripts --save-dev

Usage in legacy config

Add userscripts to the plugins section of your .eslintrc configuration file:

{
  "extends": ["plugin:userscripts/recommended"]
}

Usage in recent flat config

Add an element to the config array in your eslint.config.* file :

const userscripts = require('eslint-plugin-userscripts');

module.exports = [
  // other configs
  {
    files: ['*.user.js'],
    plugins: {
      userscripts: {
        rules: userscripts.rules
      }
    },
    rules: {
      ...userscripts.configs.recommended.rules
    },
    settings: {
      userscriptVersions: {
        violentmonkey: '*'
      }
    }
  }
];

Supported Rules

Rule Description Recommended
filename-user Ensures userscripts end with .user.js ✅
no-invalid-grant Ensures the argument passed to @grant is valid ✅
no-invalid-metadata Ensures userscripts have valid metadata ✅
require-name Ensures userscripts have a name ✅
require-description Ensures userscripts have a description ✅
require-version Ensures userscripts have a valid version ✅
use-homepage-and-url Ensures that for each homepage attribute, homepageURL is also used ✅
require-download-url Ensures that for each downloadURL there is a updateURL ✅
align-attributes Ensures that attributes are spaced out and aligned ✅
require-attribute-space-prefix Ensure that attributes are prefixed by one space ✅
metadata-spacing Ensures there is a newline between the metadata and the code ✅
no-invalid-headers Ensures userscripts have valid headers ✅
compat-grant Ensures your @grant permissions are supported
compat-headers Ensures your headers are supported
better-use-match Prefers @match over @include ✅