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.
67 lines
1.4 KiB
67 lines
1.4 KiB
# import/no-relative-packages |
|
|
|
Use this rule to prevent importing packages through relative paths. |
|
|
|
It's useful in Yarn/Lerna workspaces, were it's possible to import a sibling |
|
package using `../package` relative path, while direct `package` is the correct one. |
|
|
|
+(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule. |
|
|
|
### Examples |
|
|
|
Given the following folder structure: |
|
|
|
``` |
|
my-project |
|
├── packages |
|
│ ├── foo |
|
│ │ ├── index.js |
|
│ │ └── package.json |
|
│ └── bar |
|
│ ├── index.js |
|
│ └── package.json |
|
└── entry.js |
|
``` |
|
|
|
And the .eslintrc file: |
|
``` |
|
{ |
|
... |
|
"rules": { |
|
"import/no-relative-packages": "error" |
|
} |
|
} |
|
``` |
|
|
|
The following patterns are considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/packages/foo.js |
|
*/ |
|
|
|
import bar from '../bar'; // Import sibling package using relative path |
|
import entry from '../../entry.js'; // Import from parent package using relative path |
|
|
|
/** |
|
* in my-project/entry.js |
|
*/ |
|
|
|
import bar from './packages/bar'; // Import child package using relative path |
|
``` |
|
|
|
The following patterns are NOT considered problems: |
|
|
|
```js |
|
/** |
|
* in my-project/packages/foo.js |
|
*/ |
|
|
|
import bar from 'bar'; // Import sibling package using package name |
|
|
|
/** |
|
* in my-project/entry.js |
|
*/ |
|
|
|
import bar from 'bar'; // Import sibling package using package name |
|
```
|
|
|