You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.3 KiB
79 lines
2.3 KiB
# import/no-useless-path-segments |
|
|
|
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 |
|
└── pages |
|
├── about.js |
|
├── contact.js |
|
└── index.js |
|
``` |
|
|
|
The following patterns are considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/app.js |
|
*/ |
|
|
|
import "./../pages/about.js"; // should be "./pages/about.js" |
|
import "./../pages/about"; // should be "./pages/about" |
|
import "../pages/about.js"; // should be "./pages/about.js" |
|
import "../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: |
|
|
|
```js |
|
/** |
|
* 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`: |
|
```js |
|
"import/no-useless-path-segments": ["error", { |
|
noUselessIndex: true, |
|
}] |
|
``` |
|
|
|
Additionally to the patterns described above, the following imports are considered problems if `noUselessIndex` is enabled: |
|
|
|
```js |
|
// 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/extensions](https://github.com/import-js/eslint-plugin-import#importextensions) for details. |
|
|
|
### commonjs |
|
|
|
When set to `true`, this rule checks CommonJS imports. Default to `false`.
|
|
|