Sitelet https://github.com/import-js/eslint-plugin-import/issues/1248
Skip to content

import/extensions ignores extension overrides if ignorePackages is set in object options #1248

Description

@le0nik

node: v10.14.1
eslint: v5.10.0
eslint-plugin-import: v2.14.0

.eslintrc.js

module.exports = {
  plugins: ['import'],
  rules: {
    'import/extensions': ['error', 'always', {
      ignorePackages: true,
      js: 'never',
    }]
  }
}

./src/index.js

import app from './app';

Running eslint results in an error:

/Volumes/Projects/project/src/index.js
1:22  error  Missing file extension "js" for "./app"  import/extensions

The problem seems to be here https://github.com/benmosher/eslint-plugin-import/blob/1cd82eb27df85768fbd076e4ff6b7f36d6f652ce/src/rules/extensions.js#L36-L45

Plugin expects extensions overrides to be specified inside pattern property inside the options object if ignorePackages property is also specified. It's not documented here though.

So this configuration works correctly:

{
  rules: {
    'import/extensions': ['error', 'always', {
      ignorePackages: true,
      pattern: { // wrap extensions in the `pattern` object
        js: 'never',
      }
    }]
  }
}

Either documentation is lacking or pattern property should not be expected in options.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions