Skip to content

Latest commit

 

History

History
85 lines (64 loc) · 2.51 KB

no-useless-path-segments.md

File metadata and controls

85 lines (64 loc) · 2.51 KB

import-x/no-useless-path-segments

🔧 This rule is automatically fixable by the --fix CLI option.

Use this rule to prevent unnecessary path segments in import and require statements.

Rule Details

Given the following folder structure:

my-project
├── app.js
├── footer.js
├── header.js
└── helpers.js
└── helpers
    └── index.js
├── index.js
└── pages
    ├── about.js
    ├── contact.js
    └── index.js

The following patterns are considered problems:

/**
 *  in my-project/app.js
 */

import './../my-project/pages/about.js' // should be "./pages/about.js"
import './../my-project/pages/about' // should be "./pages/about"
import '../my-project/pages/about.js' // should be "./pages/about.js"
import '../my-project/pages/about' // should be "./pages/about"
import './pages//about' // should be "./pages/about"
import './pages/' // should be "./pages"
import './pages/index' // should be "./pages" (except if there is a ./pages.js file)
import './pages/index.js' // should be "./pages" (except if there is a ./pages.js file)

The following patterns are NOT considered problems:

/**
 *  in my-project/app.js
 */

import './header.js'
import './pages'
import './pages/about'
import '.'
import '..'
import fs from 'fs'

Options

noUselessIndex

If you want to detect unnecessary /index or /index.js (depending on the specified file extensions, see below) imports in your paths, you can enable the option noUselessIndex. By default it is set to false:

"import-x/no-useless-path-segments": ["error", {
  noUselessIndex: true,
}]

Additionally to the patterns described above, the following imports are considered problems if noUselessIndex is enabled:

// in my-project/app.js
import './helpers/index' // should be "./helpers/" (not auto-fixable to `./helpers` because this would lead to an ambiguous import of `./helpers.js` and `./helpers/index.js`)
import './pages/index' // should be "./pages" (auto-fixable)
import './pages/index.js' // should be "./pages" (auto-fixable)

Note: noUselessIndex only avoids ambiguous imports for .js files if you haven't specified other resolved file extensions. See Settings: import-x/extensions for details.

commonjs

When set to true, this rule checks CommonJS imports. Default to false.