Skip to content

Commit f6e61b0

Browse files
author
Fernando Maia
committed
feat: add overrideBuiltinModules option (default to true)
fix #5
1 parent 379c397 commit f6e61b0

File tree

2 files changed

+68
-54
lines changed

2 files changed

+68
-54
lines changed

README.md

Lines changed: 62 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,98 @@
11
# import-sort-style-module-alias
22

33
A style for [import-sort](https://github.com/renke/import-sort) that is focused
4-
on modules with relative aliases support.
4+
on modules with relative modules alias support.
5+
6+
## Options
7+
8+
| Name | Type | Description | Default value |
9+
| ---------------------- | -------- | ----------------------------------------------------------------- | ------------- |
10+
| alias | string[] | List of resolver aliases | [] |
11+
| overrideBuiltInModules | boolean | Whether an alias should override a Node built-in module (e.g. fs) | true |
512

613
## Configuration
14+
715
package.json:
16+
817
```json
918
{
10-
"importSort": {
11-
".js, .jsx, .es6, .es": {
12-
"parser": "babylon",
13-
"style": "module-alias",
14-
"options": {
15-
"alias": ["components", "modules"]
16-
}
17-
},
18-
".ts, .tsx": {
19-
"parser": "typescript",
20-
"style": "module-alias",
21-
"options": {
22-
"alias": ["components", "modules"]
23-
}
24-
}
19+
"importSort": {
20+
".js, .jsx, .es6, .es": {
21+
"parser": "babylon",
22+
"style": "module-alias",
23+
"options": {
24+
"alias": ["components", "modules"],
25+
"overrideBuiltinModules": true
26+
}
27+
},
28+
".ts, .tsx": {
29+
"parser": "typescript",
30+
"style": "module-alias",
31+
"options": {
32+
"alias": ["components", "modules"]
33+
}
2534
}
35+
}
2636
}
2737
```
2838

2939
or .sortimportrc:
40+
3041
```json
3142
{
32-
".js, .jsx, .es6, .es": {
33-
"parser": "babylon",
34-
"style": "module-alias",
35-
"options": {
36-
"alias": ["components", "modules"]
37-
}
38-
},
39-
".ts, .tsx": {
40-
"parser": "typescript",
41-
"style": "module-alias",
42-
"options": {
43-
"alias": ["components", "modules"]
44-
}
43+
".js, .jsx, .es6, .es": {
44+
"parser": "babylon",
45+
"style": "module-alias",
46+
"options": {
47+
"alias": ["components", "modules"]
48+
}
49+
},
50+
".ts, .tsx": {
51+
"parser": "typescript",
52+
"style": "module-alias",
53+
"options": {
54+
"alias": ["components", "modules"]
4555
}
56+
}
4657
}
4758
```
4859

4960
## Result
5061

5162
```js
5263
// Third-party modules with side effects (not sorted because order may matter)
53-
import "a";
54-
import "c";
55-
import "b";
64+
import 'a';
65+
import 'c';
66+
import 'b';
5667

5768
// First-party alias modules with side effects (not sorted because order may matter)
58-
import "{aliasA}";
59-
import "{aliasC}";
60-
import "{aliasB}";
69+
import '{aliasA}';
70+
import '{aliasC}';
71+
import '{aliasB}';
6172

6273
// First-party relative modules with side effects (not sorted because order may matter)
63-
import "./a";
64-
import "./c";
65-
import "./b";
74+
import './a';
75+
import './c';
76+
import './b';
6677

6778
// Modules from the Node.js "standard" library sorted by name
68-
import {readFile, writeFile} from "fs";
69-
import * as path from "path";
79+
import { readFile, writeFile } from 'fs';
80+
import * as path from 'path';
7081

7182
// Third-party modules sorted by name
72-
import aa from "aa";
73-
import bb from "bb";
74-
import cc from "cc";
83+
import aa from 'aa';
84+
import bb from 'bb';
85+
import cc from 'cc';
7586

7687
// First-party alias modules sorted by name
77-
import aaa from "{aliasAAA}";
78-
import bbb from "{aliasBBB}";
88+
import aaa from '{aliasAAA}';
89+
import bbb from '{aliasBBB}';
7990

8091
// First-party relative modules sorted by "relative depth" and then by name
81-
import aaa from "../../aaa";
82-
import bbb from "../../bbb";
83-
import aaaa from "../aaaa";
84-
import bbbb from "../bbbb";
85-
import aaaaa from "./aaaaa";
86-
import bbbbb from "./bbbbb";
92+
import aaa from '../../aaa';
93+
import bbb from '../../bbb';
94+
import aaaa from '../aaaa';
95+
import bbbb from '../bbbb';
96+
import aaaaa from './aaaaa';
97+
import bbbbb from './bbbbb';
8798
```

src/index.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { IStyleAPI, IStyleItem } from 'import-sort-style';
33

44
export interface Options {
55
alias: string[];
6+
overrideBuiltinModules: boolean;
67
}
78

89
const hasAlias = (aliases: string[]) => (imported: IImport): boolean =>
@@ -15,7 +16,7 @@ const hasAlias = (aliases: string[]) => (imported: IImport): boolean =>
1516
export default (
1617
styleApi: IStyleAPI,
1718
_file?: string,
18-
options?: Options
19+
{ alias: aliases = [], overrideBuiltinModules = true } = {} as Options
1920
): IStyleItem[] => {
2021
const {
2122
alias,
@@ -31,7 +32,7 @@ export default (
3132
unicode,
3233
} = styleApi;
3334

34-
const isAliasModule = hasAlias((options && options.alias) || []);
35+
const isAliasModule = hasAlias(aliases || []);
3536

3637
return [
3738
// import "foo"
@@ -48,7 +49,9 @@ export default (
4849

4950
// import … from "fs";
5051
{
51-
match: isNodeModule,
52+
match: overrideBuiltinModules
53+
? and(isNodeModule, not(isAliasModule))
54+
: isNodeModule,
5255
sort: moduleName(naturally),
5356
sortNamedMembers: alias(unicode),
5457
},

0 commit comments

Comments
 (0)