-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
50fad5f
commit 77b2379
Showing
2 changed files
with
109 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# @tunnel/eslint-plugin-no-relative-import-paths | ||
|
||
Moving a file to different folder, could result in changing all imports statement in that file. This will not happen is the import paths are absolute. The eslint rule helps enforcing having absolute import paths. | ||
Support eslint --fix to automatically change imports to absolute paths. | ||
|
||
# Installation | ||
|
||
Install [ESLint](https://www.github.com/eslint/eslint) either locally or globally. (Note that locally, per project, is strongly preferred) | ||
|
||
```sh | ||
npm install eslint --save-dev | ||
``` | ||
|
||
If you installed `ESLint` globally, you have to install this plugin globally too. Otherwise, install it locally. | ||
|
||
```sh | ||
npm install @tunnel/eslint-plugin-no-relative-import-paths --save-dev | ||
``` | ||
|
||
# Configuration | ||
|
||
Add the plugin to the plugins section, and configure the rule options. | ||
|
||
```json | ||
{ | ||
"plugins": ["no-relative-import-paths"], | ||
"rules": { | ||
"@tunnel/no-relative-import-paths/no-relative-import-paths": [ | ||
"warn", | ||
{ "allowSameFolder": true } | ||
] | ||
} | ||
} | ||
``` | ||
|
||
## Rule options | ||
|
||
```json | ||
... | ||
"@tunnel/no-relative-import-paths/no-relative-import-paths": [ | ||
"warn", | ||
{ "allowSameFolder": true, "rootDir": "src", "prefix": "" } | ||
] | ||
... | ||
``` | ||
|
||
- `enabled`: for enabling the rule. 0=off, 1=warn, 2=error. Defaults to 0. | ||
- `allowSameFolder`: optional boolean set to `true` to allow relative import paths for imported files from the same folder (default to `false`). | ||
|
||
### `allowSameFolder` | ||
|
||
When `true` the rule will ignore relative import paths for imported files from the same folder | ||
|
||
Examples of code for this rule: | ||
|
||
```js | ||
// when true this will be ignored | ||
// when false this will generate a warning | ||
import Something from './something'; | ||
|
||
// will always generate a warning | ||
import Something from '../modules/something'; | ||
``` | ||
|
||
### `rootDir` | ||
|
||
Useful when auto-fixing and the rootDir should not be included in the absolute path. | ||
|
||
Examples of code for this rule: | ||
|
||
```js | ||
// when not configured: | ||
import Something from '../../components/something'; | ||
|
||
// will result in | ||
import Something from 'src/components/something'; | ||
``` | ||
|
||
```js | ||
// when configured as { "rootDir": "src" } | ||
import Something from '../../components/something'; | ||
|
||
// will result in | ||
import Something from 'components/something'; | ||
// ^- no 'src/' prefix is added | ||
``` | ||
|
||
### `prefix` | ||
|
||
Useful when auto-fixing and a prefix should be included in the absolute path. | ||
|
||
Examples of code for this rule: | ||
|
||
```js | ||
// when not configured: | ||
import Something from '../../components/something'; | ||
|
||
// will result in | ||
import Something from 'src/components/something'; | ||
``` | ||
|
||
```js | ||
// when configured as { "prefix": "@" } | ||
import Something from '../../components/something'; | ||
|
||
// will result in | ||
import Something from '@/components/something'; | ||
``` |