Skip to content

Performance regression when updating from 2.9.0 to 2.10.0 #1058

Closed
@klimashkin

Description

Eslint check time on whole project takes 50% more time after updating from 2.9.0 to 2.10.0 even with disabled import/no-cycle rule.

My config:

{
    /** Import Static analysis https://github.com/benmosher/eslint-plugin-import#rules **/
    // Ensure imports point to a file/module that can be resolved
    'import/no-unresolved': [2, { caseSensitive: true, commonjs: true, amd: false }],
    // Ensure named imports correspond to a named export in the remote file
    'import/named': 2,
    // Ensure a default export is present, given a default import
    'import/default': 2,
    // Ensure imported namespaces contain dereferenced properties as they are dereferenced
    'import/namespace': [2, { allowComputed: true }],
    // Restrict which files can be imported in a given folder
    'import/no-restricted-paths': [0, { zones: [
      {target: './client', from: './app'},
    ] }],
    // Forbid import of modules using absolute paths
    'import/no-absolute-path': [2, { esmodule: true, commonjs: true, amd: false }],
    // Forbid require() calls with expressions (We use it for intl, svg icons)
    'import/no-dynamic-require': 0,
    // Prevent importing the submodules of other modules
    'import/no-internal-modules': 0,
    // Forbid Webpack loader syntax in imports
    'import/no-webpack-loader-syntax': 0,
    // Forbid a module from importing itself
    'import/no-self-import': 2,
    // Forbid useless path segments
    'import/no-useless-path-segments': 2,

    /** Import Helpful warnings https://github.com/benmosher/eslint-plugin-import#rules **/
    // Report any invalid exports, i.e. re-export of the same name
    'import/export': 2,
    // Report use of exported name as identifier of default export
    'import/no-named-as-default': 0,
    // Report use of exported name as property of default export
    'import/no-named-as-default-member': 2,
    // Report imported names marked with @deprecated documentation tag
    'import/no-deprecated': 0,
    // Forbid the use of extraneous packages, allow devDependencies
    'import/no-extraneous-dependencies': [2, { devDependencies: true, packageDir: path.resolve('./') }],
    // Forbid the use of mutable exports with var or let
    'import/no-mutable-exports': 2,

    /** Import Module systems https://github.com/benmosher/eslint-plugin-import#rules **/
    // Report potentially ambiguous parse goal
    'import/unambiguous': 0,
    // Report CommonJS require calls and module.exports or exports.*
    'import/no-commonjs': 0,
    // Report AMD require and define calls
    'import/no-amd': 0,
    // No Node.js builtin modules. Allow in general, forbid in ./app
    'import/no-nodejs-modules': 0,

    /** Import Style guide https://github.com/benmosher/eslint-plugin-import#rules **/
    // Ensure all imports appear before other statements
    'import/first': 2,
    // Ensure all exports appear after other statements
    'import/exports-last': 0,
    // Report repeated import of the same module in multiple places
    'import/no-duplicates': 2,
    // Report namespace imports
    'import/no-namespace': 0,
    // Ensure consistent use of file extension within the import path. Use extensions except .js/jsx
    'import/extensions': [2, 'always', { js: 'never', jsx: 'never' }],
    // Enforce a convention in module import order. TODO: discuss import order that we want and apply
    'import/order': [0, {
      'groups': ['builtin'],
      'newlines-between': 'ignore',
    }],
    // Enforce a newline after import statements. 'padding-line-between-statements' handles this for us
    'import/newline-after-import': 0,
    // Prefer a default export if module exports a single name
    'import/prefer-default-export': 0,
    // Limit the maximum number of dependencies a module can have
    'import/max-dependencies': 0,
    // Forbid unassigned imports
    'import/no-unassigned-import': 0,
    // Forbid named default exports
    'import/no-named-default': 0,
    // Forbid default exports
    'import/no-default-export': 0,
    // Forbid anonymous values as default exports
    'import/no-anonymous-default-export': 0,
    // Prefer named exports to be grouped together in a single export declaration
    'import/group-exports': 0,
}

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions