npm.io
1.0.0 • Published 2 months ago

@acdvs/eslint-plugin-amd

Licence
MIT
Version
1.0.0
Deps
1
Size
67 kB
Vulns
0
Weekly
0

eslint-plugin-amd

ESLint plugin for JavaScript AMD module syntax.

npm License: MIT

Features

  • Lints all AMD define() call shapes
  • Detects dynamic require() calls
  • Checks for mismatched dependency literals factory parameters
  • Enforces path conventions (no extensions, sorted dependencies)
  • Exports utility functions for use by other ESLint plugins

Installation

npm i -D eslint @acdvs/eslint-plugin-amd

Requires ESLint 9+ flat config format.

Configuration (ESLint 9+ flat config)

// eslint.config.js
import amd from '@acdvs/eslint-plugin-amd';

export default [
  // Recommended rules
  ...amd.configs.recommended,

  // Or configure rules individually
  {
    plugins: { amd },
    rules: {
      'amd/no-extra-deps': 'error',
      'amd/no-extra-params': 'error',
      'amd/no-invalid-define': 'error',
      'amd/no-module-extensions': 'warn',
      'amd/no-name': 'warn',
      'amd/sorted-deps': ['warn', { order: 'asc' }],
    },
  },
];

Rules

Rule Description Recommended
amd/define-indicator Enforce the presence of the AMD module define() indicator.
amd/no-dynamic-require Disallow dynamic (non-literal) expressions in require() calls.
amd/no-extra-deps Disallow more dependency literals than factory parameters.
amd/no-extra-params Disallow more factory parameters than dependency literals.
amd/no-invalid-define Disallow define() calls that do not match a valid AMD module signature.
amd/no-module-extensions Disallow file extensions in AMD dependency paths.
amd/no-name Disallow named AMD modules.
amd/sorted-deps Enforce alphabetical ordering of define() dependency literals.

Using utility functions in your own plugin

import amdUtils from '@acdvs/eslint-plugin-amd/utils';

create(context) {
  return {
    CallExpression(node) {
      const defineCall = amdUtils.getDefineCall(node);

      if (!defineCall) return;

      // ...
    },
  };
}

License

MIT

Keywords