Skip to content

Salesforce Lightning (Aura) specific linting rules for ESLint

License

Notifications You must be signed in to change notification settings

forcedotcom/eslint-plugin-aura

eslint-plugin-aura

Build status NPM version

Salesforce Lightning (Aura) specific linting rules for ESLint.

Installation

npm install --save-dev @salesforce/eslint-plugin-aura

Usage

Important

Starting with v3.0.0, @salesforce/eslint-plugin-aura only supports eslint@v9. Use @salesforce/eslint-plugin-aura@v2.x for older versions of ESLint.

Add this plugin to your ESLint configuration and extend your desired configuration. See ESLint documentation for details.

Example eslint.config.js:

const eslintAura = require('@salesforce/eslint-plugin-aura');
module.exports = [
  ...eslintAura.configs.recommended,
  ...eslintAura.configs.locker,
];

Rules

Aura

Rule ID Description
aura/aura-api validate Aura APIs
aura/getevt-markup-prefix verify the presence of the markup:// prefix for events accessed via $A.getEvt()
aura/no-deprecated-aura-error prevent usage of $A.error
aura/no-deprecated-component-creation prevent usage of deprecated component creation methods
aura/no-deprecated-event-creation prevent usage of deprecated event creation methods

Locker

Rule ID Description
aura/ecma-intrinsics validate JavaScript intrinsic APIs
aura/secure-document validate secure document public APIs
aura/secure-window validate secure window public APIs

Configurations

This package exposes 2 configurations for your usage.

Recommended configuration

Goal: Prevent common pitfalls with Lightning component development, and enforce other Salesforce platform restrictions.

Rules:

Usage

// eslint.config.js
const eslintPluginAura = require('@salesforce/eslint-plugin-aura');

module.exports = [...eslintPluginAura.configs.recommended];

Migration to ESLint v9

The recommended configurations extend ESLint's js/recommended predefined configuration (previously known as eslint:recommended). ESLint v9 has added 4 new rules to the recommended config, you can read about that here. You can opt to turn these off for backwards compatibility.

// eslint.config.js
const eslintAura = require('@salesforce/eslint-plugin-aura');
module.exports = [
  ...eslintAura.configs.recommended,
  {
    rules: {
      'no-empty-static-block': 'off',
      'no-constant-binary-expression': 'off',
      'no-new-native-non-constructor': 'off',
      'no-unused-private-class-members': 'off',
    },
  },
];

Lightning Locker configuration

Goal: Prevent Lightning Locker violations.

Rules:

  • @salesforce/eslint-plugin-aura/recommended rules.
  • Proper usage of document and window via the secure-document and secure-window rules, respectively.
  • Proper usage of Javascript intrinsic APIs via the ecma-intrinsics rule.

Usage

// eslint.config.js
const eslintPluginAura = require('@salesforce/eslint-plugin-aura');

module.exports = [...eslintPluginAura.configs.locker];