ESLint Plugin for RequireJS

raw JSON →
4.0.1 verified Sat Apr 25 auth: no javascript

An ESLint plugin that enforces code conventions for RequireJS (AMD) modules. Version 4.0.1 requires ESLint >=3.0.0 and Node >=6. Provides 13 rules covering possible errors (e.g., no-invalid-define, no-multiple-define, no-js-extension) and stylistic choices (e.g., no-named-define, no-amd-define). Includes a bundled 'recommended' config that enables all recommended rules and sets the amd environment. Under active development with frequent updates. Compared to other module linting plugins, this is the only dedicated RequireJS/AMD plugin for ESLint.

error Error: Failed to load plugin 'requirejs': Cannot find module 'eslint-plugin-requirejs'
cause The plugin is not installed, or ESLint cannot find it.
fix
Run 'npm install --save-dev eslint-plugin-requirejs' and ensure node_modules is in the correct location.
error ESLint configuration error: The rule 'no-invalid-define' is not found
cause The rule is not prefixed with 'requirejs/'.
fix
Use 'requirejs/no-invalid-define' in your rules object.
error Configuration for rule 'requirejs/no-invalid-define' is invalid: Severity should be one of 0, 1, 2 or 'off','warn','error'.
cause Invalid severity value used in rule configuration.
fix
Use 'off', 'warn', 'error', or 0, 1, 2.
gotcha Plugin requires ESLint >=3.0.0 and Node >=6. Older Node or ESLint will not work.
fix Use Node >=6 and ESLint >=3.0.0. For older environments, install eslint-plugin-requirejs@3.2.0.
gotcha Rules must be prefixed with 'requirejs/' in ESLint config.
fix Use rule names like 'requirejs/no-invalid-define', not bare rule name.
gotcha When extending the recommended config, use 'plugin:requirejs/recommended' not 'requirejs/recommended'.
fix Set extends to 'plugin:requirejs/recommended'.
npm install eslint-plugin-requirejs
yarn add eslint-plugin-requirejs
pnpm add eslint-plugin-requirejs

Configures ESLint with the requirejs plugin and recommended rules, with example valid and invalid module definitions.

// .eslintrc.json
{
  "plugins": ["requirejs"],
  "extends": ["plugin:requirejs/recommended"],
  "rules": {
    "requirejs/no-named-define": "warn",
    "requirejs/no-commonjs-wrapper": "error"
  }
}

// Example: define a module
// Passes lint:
define(['jquery'], function($) {
  'use strict';
  return function() { /* module code */ };
});

// Fails lint (named define):
define('myModule', ['jquery'], function($) { return {}; });