@@ -59,6 +59,7 @@ type Options<T extends string[]> = [
5959 groups : ( Group < T > [ ] | Group < T > ) [ ]
6060 environment : 'node' | 'bun'
6161 internalPattern : string [ ]
62+ sortSideEffects : boolean
6263 maxLineLength ?: number
6364 order : 'desc' | 'asc'
6465 ignoreCase : boolean
@@ -101,6 +102,11 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
101102 } ,
102103 type : 'array' ,
103104 } ,
105+ sortSideEffects : {
106+ description :
107+ 'Controls whether side-effect imports should be sorted.' ,
108+ type : 'boolean' ,
109+ } ,
104110 newlinesBetween : {
105111 description :
106112 'Specifies how new lines should be handled between import groups.' ,
@@ -197,6 +203,7 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
197203 order : 'asc' ,
198204 ignoreCase : true ,
199205 internalPattern : [ '~/**' ] ,
206+ sortSideEffects : false ,
200207 newlinesBetween : 'always' ,
201208 maxLineLength : undefined ,
202209 groups : [
@@ -230,6 +237,7 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
230237 customGroups : { type : { } , value : { } } ,
231238 internalPattern : [ '~/**' ] ,
232239 newlinesBetween : 'always' ,
240+ sortSideEffects : false ,
233241 type : 'alphabetical' ,
234242 environment : 'node' ,
235243 ignoreCase : true ,
@@ -524,10 +532,14 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
524532 if ( ! ( groupNum in grouped ) ) {
525533 grouped [ groupNum ] = [ node ]
526534 } else {
527- grouped [ groupNum ] = sortNodes (
528- [ ...grouped [ groupNum ] , node ] ,
529- options ,
530- )
535+ if ( ! options . sortSideEffects && isSideEffectImport ( node . node ) ) {
536+ grouped [ groupNum ] = [ ...grouped [ groupNum ] , node ]
537+ } else {
538+ grouped [ groupNum ] = sortNodes (
539+ [ ...grouped [ groupNum ] , node ] ,
540+ options ,
541+ )
542+ }
531543 }
532544 }
533545
@@ -643,7 +655,9 @@ export default createEslintRule<Options<string[]>, MESSAGE_ID>({
643655
644656 if (
645657 ! (
646- isSideEffectImport ( left . node ) && isSideEffectImport ( right . node )
658+ ! options . sortSideEffects &&
659+ isSideEffectImport ( left . node ) &&
660+ isSideEffectImport ( right . node )
647661 ) &&
648662 ! hasContentBetweenNodes ( left , right ) &&
649663 ( leftNum > rightNum ||
0 commit comments