eslint-plugin-sort-exports
eslint-plugin-sort-exports copied to clipboard
Autofixer does not a great job at sorting (and actually fails to entirely sort)
I had a file like this:
/* eslint-disable import/no-internal-modules */
/* eslint sort-exports/sort-exports: "error" */
export { default as LogoLink } from './LogoLink.vue'
export { default as AddPixelingComponent } from './AddPixelingComponent/AddPixelingComponent.vue'
export { default as AdvancedLinkEditor } from './AdvancedLinkEditor/AdvancedLinkEditor.vue'
export { default as AffiliateAggregatorsTable } from './AffiliateAggregatorsTable/AffiliateAggregatorsTable.vue'
export { default as AffiliateProgramsTable } from './AffiliateProgramsTable/AffiliateProgramsTable.vue'
export { default as BuiltLinkBox } from './BuiltLinkBox/BuiltLinkBox.vue'
export { default as ConnectAffiliateProgramPopup } from './ConnectAffiliateProgramPopup/ConnectAffiliateProgramPopup.vue'
export { default as EmailNotifications } from './EmailNotifications/EmailNotifications.vue'
export { default as Interstitial } from './Interstitial/interstitial.vue'
// export { default as JunkOnOffToggle } from './JunkOnOffToggle/JunkOnOffToggle.vue'
export { default as LinkEditor } from './LinkEditor/LinkEditor.vue'
export { default as LinksList } from './LinksList/LinksList.vue'
export { default as LinksListFilter } from './LinksListFilter/LinksListFilter.vue'
export { default as MiniReportContent } from './MiniReportContent/MiniReportContent.vue'
// export { default as OnOffToggle } from './OnOffToggle/OnOffToggle.vue'
export { default as PeriodTotalLine } from './PeriodTotalLine/PeriodTotalLine.vue'
export { default as ReportController } from './ReportController/ReportController.vue'
export { default as ReportDataTable } from './ReportDataTable/ReportDataTable.vue'
export { default as SelectSearchRetailer } from './SelectSearchRetailer/SelectSearchRetailer.vue'
export { default as SplitLinkEditor } from './SplitLinkEditor/SplitLinkEditor.vue'
export { default as SubusersController } from './SubusersController/SubusersController.vue'
export { default as UtmDomains } from './UtmDomains/UtmDomains.vue'
export { default as ProductSuggestionsEnticement } from './ProductSuggestionsEnticement/ProductSuggestionsEnticement.vue'
export { default as GlobalizerBox } from './GlobalizerBox/GlobalizerBox.vue'
export { default as Tags } from './Tags/Tags.vue'
Upon saving / fixing, the output was:
export { default as AddPixelingComponent } from './AddPixelingComponent/AddPixelingComponent.vue'
export { default as AdvancedLinkEditor } from './AdvancedLinkEditor/AdvancedLinkEditor.vue'
export { default as AffiliateAggregatorsTable } from './AffiliateAggregatorsTable/AffiliateAggregatorsTable.vue'
export { default as AffiliateProgramsTable } from './AffiliateProgramsTable/AffiliateProgramsTable.vue'
export { default as BuiltLinkBox } from './BuiltLinkBox/BuiltLinkBox.vue'
export { default as ConnectAffiliateProgramPopup } from './ConnectAffiliateProgramPopup/ConnectAffiliateProgramPopup.vue'
export { default as EmailNotifications } from './EmailNotifications/EmailNotifications.vue'
export { default as Interstitial } from './Interstitial/interstitial.vue'
// export { default as JunkOnOffToggle } from './JunkOnOffToggle/JunkOnOffToggle.vue'
export { default as LinkEditor } from './LinkEditor/LinkEditor.vue'
export { default as LinksList } from './LinksList/LinksList.vue'
/* eslint-disable import/no-internal-modules */
/* eslint sort-exports/sort-exports: "error" */
export { default as LogoLink } from './LogoLink.vue'
export { default as LinksListFilter } from './LinksListFilter/LinksListFilter.vue'
export { default as GlobalizerBox } from './GlobalizerBox/GlobalizerBox.vue'
export { default as MiniReportContent } from './MiniReportContent/MiniReportContent.vue'
// export { default as OnOffToggle } from './OnOffToggle/OnOffToggle.vue'
export { default as PeriodTotalLine } from './PeriodTotalLine/PeriodTotalLine.vue'
export { default as ProductSuggestionsEnticement } from './ProductSuggestionsEnticement/ProductSuggestionsEnticement.vue'
export { default as ReportController } from './ReportController/ReportController.vue'
export { default as ReportDataTable } from './ReportDataTable/ReportDataTable.vue'
export { default as SelectSearchRetailer } from './SelectSearchRetailer/SelectSearchRetailer.vue'
export { default as SplitLinkEditor } from './SplitLinkEditor/SplitLinkEditor.vue'
export { default as SubusersController } from './SubusersController/SubusersController.vue'
export { default as Tags } from './Tags/Tags.vue'
export { default as UtmDomains } from './UtmDomains/UtmDomains.vue'
As you can see, this had the following bad outcomes:
- It put un-necessary spaces between exports (minor), sometimes multiple blank lines
- It pushed eslint directives from the top of the file to somewhere in the middle (this breaks ESLint)
- It didn't actually sort everything and errors persist
I love that you made this plugin, so I hope you have time to fix it! No worries if not.