feat: add project alias type
This commit is contained in:
Generated
+2909
-1287
File diff suppressed because it is too large
Load Diff
+21
-4
@@ -9,6 +9,8 @@ import { IImport } from "import-sort-parser";
|
|||||||
export default function (styleApi: IStyleAPI): IStyleItem[] {
|
export default function (styleApi: IStyleAPI): IStyleItem[] {
|
||||||
const {
|
const {
|
||||||
and,
|
and,
|
||||||
|
or,
|
||||||
|
not,
|
||||||
always,
|
always,
|
||||||
dotSegmentCount,
|
dotSegmentCount,
|
||||||
isAbsoluteModule,
|
isAbsoluteModule,
|
||||||
@@ -19,6 +21,10 @@ export default function (styleApi: IStyleAPI): IStyleItem[] {
|
|||||||
unicode,
|
unicode,
|
||||||
} = styleApi;
|
} = styleApi;
|
||||||
|
|
||||||
|
const isProjectAlias = (i: IImport) => {
|
||||||
|
return i.moduleName.startsWith('@/');
|
||||||
|
}
|
||||||
|
|
||||||
// comparator function which place non-alphanumeric first
|
// comparator function which place non-alphanumeric first
|
||||||
const natural: IComparatorFunction = (a: string, b: string) => {
|
const natural: IComparatorFunction = (a: string, b: string) => {
|
||||||
if (a === b) {
|
if (a === b) {
|
||||||
@@ -43,15 +49,20 @@ export default function (styleApi: IStyleAPI): IStyleItem[] {
|
|||||||
aHasOnlyDefaultMember =
|
aHasOnlyDefaultMember =
|
||||||
aHasDefaultMember && !aHasNamespaceMember && !aHasNamedMember,
|
aHasDefaultMember && !aHasNamespaceMember && !aHasNamedMember,
|
||||||
aHasOnlyNamespaceMember =
|
aHasOnlyNamespaceMember =
|
||||||
aHasNamespaceMember && !aHasDefaultMember && !aHasNamedMember;
|
aHasNamespaceMember && !aHasDefaultMember && !aHasNamedMember,
|
||||||
|
aIsStyle = /(css|scss|less)$/.test(a.moduleName);
|
||||||
const bHasDefaultMember = Boolean(b.defaultMember),
|
const bHasDefaultMember = Boolean(b.defaultMember),
|
||||||
bHasNamespaceMember = Boolean(b.namespaceMember),
|
bHasNamespaceMember = Boolean(b.namespaceMember),
|
||||||
bHasNamedMember = Boolean(b.namedMembers[0]?.name),
|
bHasNamedMember = Boolean(b.namedMembers[0]?.name),
|
||||||
bHasOnlyDefaultMember =
|
bHasOnlyDefaultMember =
|
||||||
bHasDefaultMember && !bHasNamespaceMember && !bHasNamedMember,
|
bHasDefaultMember && !bHasNamespaceMember && !bHasNamedMember,
|
||||||
bHasOnlyNamespaceMember =
|
bHasOnlyNamespaceMember =
|
||||||
bHasNamespaceMember && !bHasDefaultMember && !bHasNamedMember;
|
bHasNamespaceMember && !bHasDefaultMember && !bHasNamedMember,
|
||||||
if (aHasOnlyNamespaceMember !== bHasOnlyNamespaceMember) {
|
bIsStyle = /(css|scss|less)$/.test(b.moduleName);
|
||||||
|
if (aIsStyle !== bIsStyle) {
|
||||||
|
// place styles import later
|
||||||
|
return aIsStyle ? -1 : 1;
|
||||||
|
} else if (aHasOnlyNamespaceMember !== bHasOnlyNamespaceMember) {
|
||||||
return aHasOnlyNamespaceMember ? -1 : 1;
|
return aHasOnlyNamespaceMember ? -1 : 1;
|
||||||
} else if (aHasOnlyDefaultMember !== bHasOnlyDefaultMember) {
|
} else if (aHasOnlyDefaultMember !== bHasOnlyDefaultMember) {
|
||||||
return aHasOnlyDefaultMember ? -1 : 1;
|
return aHasOnlyDefaultMember ? -1 : 1;
|
||||||
@@ -85,7 +96,13 @@ export default function (styleApi: IStyleAPI): IStyleItem[] {
|
|||||||
},
|
},
|
||||||
// absolute
|
// absolute
|
||||||
{
|
{
|
||||||
match: isAbsoluteModule,
|
match: and(isAbsoluteModule, not(isProjectAlias)),
|
||||||
|
sort: memberOrModule(natural),
|
||||||
|
sortNamedMembers: name(natural),
|
||||||
|
},
|
||||||
|
// project alias
|
||||||
|
{
|
||||||
|
match: isProjectAlias,
|
||||||
sort: memberOrModule(natural),
|
sort: memberOrModule(natural),
|
||||||
sortNamedMembers: name(natural),
|
sortNamedMembers: name(natural),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user