Skip to content

chore: replace @trivago/prettier-plugin-sort-imports with prettier-plugin-organize-imports#4223

Merged
Blackbaud-SteveBrush merged 9 commits intomainfrom
use-prettier-plugin-organize-imports
Apr 3, 2026
Merged

chore: replace @trivago/prettier-plugin-sort-imports with prettier-plugin-organize-imports#4223
Blackbaud-SteveBrush merged 9 commits intomainfrom
use-prettier-plugin-organize-imports

Conversation

@Blackbaud-SteveBrush
Copy link
Copy Markdown
Member

@Blackbaud-SteveBrush Blackbaud-SteveBrush commented Feb 21, 2026

Improvements:

  • Unused imports are automatically removed
  • Combines multiple imports into one if they have the same path
  • Angle-bracket asserts no longer cause Prettier to crash
  • Uses the TypeScript language service API (the same thing that "Organize Imports" tool uses in VSCode)
  • No need for complicated prettier config

Summary by CodeRabbit

  • Style

    • Reorganized and consolidated import statements across component and module files for improved code consistency.
    • Reordered export declarations in public API files.
    • Added standardized spacing to resource module files.
  • Chores

    • Switched import sorting tool from @trivago/prettier-plugin-sort-imports to prettier-plugin-organize-imports for updated import organization standards.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Feb 21, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c404186e-6bd2-47ae-9e4d-f5ca631dcb7b

📥 Commits

Reviewing files that changed from the base of the PR and between 4e74083 and 03049b9.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (130)
  • .prettierrc
  • apps/e2e/a11y-storybook/src/app/skip-link/skip-link.component.stories.ts
  • apps/e2e/action-bars-storybook/src/app/summary-action-bar/summary-action-bar.component.stories.ts
  • apps/e2e/ag-grid-storybook/src/app/ag-grid/ag-grid-stories.component.stories.ts
  • apps/e2e/ag-grid-storybook/src/app/ag-grid/ag-grid-stories.module.ts
  • apps/e2e/ag-grid-storybook/src/app/data-entry-grid/data-entry-grid.component.stories.ts
  • apps/e2e/ag-grid-storybook/src/app/data-entry-grid/data-entry-grid.module.ts
  • apps/e2e/ag-grid-storybook/src/app/data-manager/data-manager.component.stories.ts
  • apps/e2e/ag-grid-storybook/src/app/data-manager/data-manager.module.ts
  • apps/e2e/angular-tree-component-storybook/src/app/angular-tree-component/angular-tree-component.component.stories.ts
  • apps/e2e/core-storybook/src/app/dock/dock.component.stories.ts
  • apps/e2e/data-manager-storybook/src/app/data-manager/data-manager.component.stories.ts
  • apps/e2e/datetime-storybook/src/app/timepicker/timepicker.component.stories.ts
  • apps/e2e/errors-storybook/src/app/error/error.component.stories.ts
  • apps/e2e/flyout-storybook/src/app/flyout/flyout.component.stories.ts
  • apps/e2e/forms-storybook/src/app/checkbox/checkbox.component.stories.ts
  • apps/e2e/forms-storybook/src/app/file-attachment/file-attachment.component.stories.ts
  • apps/e2e/forms-storybook/src/app/input-box/input-box.component.stories.ts
  • apps/e2e/forms-storybook/src/app/radio-button/radio-button.component.stories.ts
  • apps/e2e/help-inline-storybook/src/app/help-inline/help-inline.component.stories.ts
  • apps/e2e/indicators-storybook/src/app/alert/alert.component.stories.ts
  • apps/e2e/indicators-storybook/src/app/icon/icon.component.stories.ts
  • apps/e2e/indicators-storybook/src/app/key-info/key-info.component.stories.ts
  • apps/e2e/indicators-storybook/src/app/label/label.component.stories.ts
  • apps/e2e/indicators-storybook/src/app/tokens/tokens.component.stories.ts
  • apps/e2e/indicators-storybook/src/app/wait/wait.component.stories.ts
  • apps/e2e/inline-form-storybook/src/app/inline-form/inline-form.component.stories.ts
  • apps/e2e/layout-storybook/src/app/box/box.component.stories.ts
  • apps/e2e/lists-storybook/src/app/infinite-scroll/infinite-scroll.component.stories.ts
  • apps/e2e/lists-storybook/src/app/repeater/repeater.component.stories.ts
  • apps/e2e/lookup-storybook/src/app/country-field/country-field.component.stories.ts
  • apps/e2e/lookup-storybook/src/app/lookup/lookup.component.stories.ts
  • apps/e2e/modals-storybook/src/app/confirm/confirm.component.stories.ts
  • apps/e2e/modals-storybook/src/app/modal/modal.component.stories.ts
  • apps/e2e/pages-storybook/src/app/action-hub/action-hub.component.stories.ts
  • apps/e2e/popovers-storybook/src/app/dropdown/dropdown.component.stories.ts
  • apps/e2e/popovers-storybook/src/app/popover/popover.component.stories.ts
  • apps/e2e/split-view-storybook/src/app/split-view/split-view.component.stories.ts
  • apps/e2e/tabs-storybook/src/app/tabs/tabs.component.stories.ts
  • apps/e2e/tabs-storybook/src/app/wizard/wizard.component.stories.ts
  • apps/e2e/text-editor-storybook/src/app/text-editor/text-editor.component.stories.ts
  • apps/e2e/theme-storybook/src/app/borders/borders.component.stories.ts
  • apps/e2e/theme-storybook/src/app/buttons/buttons.component.stories.ts
  • apps/e2e/theme-storybook/src/app/data-viz-colors/data-viz-colors.component.stories.ts
  • apps/e2e/theme-storybook/src/app/responsive/responsive.component.stories.ts
  • apps/e2e/theme-storybook/src/app/switch-controls/switch-controls.component.stories.ts
  • apps/e2e/theme-storybook/src/app/theming/theming.component.stories.ts
  • apps/e2e/tiles-storybook/src/app/tile-dashboard/tile-dashboard.component.stories.ts
  • apps/e2e/tiles-storybook/src/app/tile-dashboard/tile-dashboard.component.ts
  • apps/e2e/tiles-storybook/src/app/tile-dashboard/tile-dashboard.module.ts
  • apps/integration/src/app/integrations/field-heights/field-heights.component.spec.ts
  • apps/playground/src/app/components/action-bars/summary-action-bar/summary-action-bar-modal.component.ts
  • apps/playground/src/app/components/ag-grid/edit-in-modal-grid/edit-in-modal-grid.module.ts
  • apps/playground/src/app/components/ag-grid/edit-stop-when-loses-focus/edit-stop-when-loses-focus.module.ts
  • apps/playground/src/app/components/ag-grid/editable-grid/editable-grid.module.ts
  • apps/playground/src/app/components/tiles/tile-dashboard/tile-dashboard.module.ts
  • apps/playground/src/app/shared/data-manager/data-manager.module.ts
  • docs/addressing-breaking-changes/simplified-child-harness-methods/README.md
  • docs/migrating-deprecated-components/select-field/README.md
  • libs/components/a11y/src/lib/modules/shared/sky-a11y-resources.module.ts
  • libs/components/action-bars/src/lib/modules/shared/sky-action-bars-resources.module.ts
  • libs/components/ag-grid/src/index.ts
  • libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.ts
  • libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts
  • libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts
  • libs/components/ag-grid/src/lib/modules/shared/sky-ag-grid-resources.module.ts
  • libs/components/angular-tree-component/src/lib/modules/shared/sky-angular-tree-component-resources.module.ts
  • libs/components/avatar/src/lib/modules/shared/sky-avatar-resources.module.ts
  • libs/components/colorpicker/src/lib/modules/shared/sky-colorpicker-resources.module.ts
  • libs/components/core/src/lib/modules/shared/sky-core-resources.module.ts
  • libs/components/data-manager/src/index.ts
  • libs/components/data-manager/src/lib/modules/shared/sky-data-manager-resources.module.ts
  • libs/components/data-manager/testing/src/modules/data-manager/fixtures/data-manager-harness-test.component.ts
  • libs/components/datetime/src/index.ts
  • libs/components/datetime/src/lib/modules/shared/sky-datetime-resources.module.ts
  • libs/components/docs-tools/src/lib/modules/shared/sky-docs-tools-resources.module.ts
  • libs/components/errors/src/lib/modules/shared/sky-errors-resources.module.ts
  • libs/components/errors/testing/src/public-api.ts
  • libs/components/filter-bar/src/index.ts
  • libs/components/filter-bar/src/lib/modules/filter-bar/filter-bar.component.spec.ts
  • libs/components/filter-bar/src/lib/modules/filter-bar/filter-items/filter-item-lookup.component.ts
  • libs/components/filter-bar/src/lib/modules/filter-bar/filter-items/filter-item-modal.component.ts
  • libs/components/filter-bar/src/lib/modules/shared/sky-filter-bar-resources.module.ts
  • libs/components/flyout/src/lib/modules/shared/sky-flyout-resources.module.ts
  • libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.component.ts
  • libs/components/forms/src/lib/modules/shared/sky-forms-resources.module.ts
  • libs/components/forms/testing/src/public-api.ts
  • libs/components/grids/src/lib/modules/shared/sky-grids-resources.module.ts
  • libs/components/help-inline/src/lib/modules/shared/sky-help-inline-resources.module.ts
  • libs/components/icon/src/index.ts
  • libs/components/indicators/src/index.ts
  • libs/components/indicators/src/lib/modules/illustration/illustration.component.spec.ts
  • libs/components/indicators/src/lib/modules/shared/sky-indicators-resources.module.ts
  • libs/components/inline-form/src/lib/modules/shared/sky-inline-form-resources.module.ts
  • libs/components/inline-form/testing/src/public-api.ts
  • libs/components/layout/src/lib/modules/shared/sky-layout-resources.module.ts
  • libs/components/layout/testing/src/public-api.ts
  • libs/components/list-builder-view-grids/src/lib/modules/shared/sky-list-builder-view-grids-resources.module.ts
  • libs/components/list-builder/src/lib/modules/shared/sky-list-builder-resources.module.ts
  • libs/components/lists/src/index.ts
  • libs/components/lists/src/lib/modules/shared/sky-lists-resources.module.ts
  • libs/components/lists/testing/src/public-api.ts
  • libs/components/lookup/src/lib/modules/shared/sky-lookup-resources.module.ts
  • libs/components/manifest-generator/src/index.ts
  • libs/components/manifest-generator/src/testing/fixtures/example-packages/foo/src/index.ts
  • libs/components/modals/src/index.ts
  • libs/components/modals/src/lib/modules/shared/sky-modals-resources.module.ts
  • libs/components/packages/src/schematics/utility/template.ts
  • libs/components/pages/src/index.ts
  • libs/components/pages/src/lib/modules/shared/sky-pages-resources.module.ts
  • libs/components/phone-field/src/lib/modules/shared/sky-phone-field-resources.module.ts
  • libs/components/popovers/src/index.ts
  • libs/components/popovers/src/lib/modules/shared/sky-popovers-resources.module.ts
  • libs/components/progress-indicator/src/lib/modules/shared/sky-progress-indicator-resources.module.ts
  • libs/components/progress-indicator/testing/src/public-api.ts
  • libs/components/select-field/src/lib/modules/shared/sky-select-field-resources.module.ts
  • libs/components/split-view/src/lib/modules/shared/sky-split-view-resources.module.ts
  • libs/components/storybook/src/lib/welcome/welcome.component.stories.ts
  • libs/components/tabs/src/lib/modules/shared/sky-tabs-resources.module.ts
  • libs/components/tabs/testing/src/public-api.ts
  • libs/components/text-editor/src/lib/modules/shared/sky-text-editor-resources.module.ts
  • libs/components/tiles/src/lib/modules/shared/sky-tiles-resources.module.ts
  • libs/components/tiles/src/lib/modules/tiles/tile-dashboard/fixtures/tile-dashboard-fixtures.module.ts
  • libs/components/tiles/src/lib/modules/tiles/tile-dashboard/fixtures/tile-dashboard-on-push.component.fixture.ts
  • libs/components/tiles/src/lib/modules/tiles/tile-dashboard/fixtures/tile-dashboard.component.fixture.ts
  • libs/components/tiles/src/lib/modules/tiles/tile-dashboard/tile-dashboard.component.spec.ts
  • libs/components/tiles/src/lib/modules/tiles/tile-dashboard/tile-dashboard.service.spec.ts
  • libs/components/toast/src/lib/modules/shared/sky-toast-resources.module.ts
  • libs/components/toast/testing/src/public-api.ts
  • package.json

📝 Walkthrough

Walkthrough

Prettier import-sorting plugin replaced from @trivago/prettier-plugin-sort-imports to prettier-plugin-organize-imports, requiring import statement reordering across hundreds of files to conform to the new plugin's conventions. Package dependency updated accordingly.

Changes

Cohort / File(s) Summary
Prettier Configuration
.prettierrc, package.json
Replaced import-sorting plugin and removed custom sort configuration; updated devDependency from @trivago/prettier-plugin-sort-imports to prettier-plugin-organize-imports v4.3.0.
Storybook Component Stories
apps/e2e/*/src/app/**/*.component.stories.ts, libs/components/storybook/src/lib/welcome/welcome.component.stories.ts
Reordered imports to place type-only imports (import type { Meta, StoryObj }) before value imports (moduleMetadata, applicationConfig) per new plugin conventions; applied consistently across ~45 Storybook story files.
Ag-Grid Module Imports
apps/e2e/ag-grid-storybook/src/app/**/*.module.ts, apps/playground/src/app/components/ag-grid/**/*.module.ts, apps/playground/src/app/shared/data-manager/data-manager.module.ts
Consolidated separate imports of AllCommunityModule and ModuleRegistry from ag-grid-community into single combined import statements; no logic changes.
Component Index Exports
libs/components/ag-grid/src/index.ts, libs/components/data-manager/src/index.ts, libs/components/datetime/src/index.ts, libs/components/errors/testing/src/public-api.ts, libs/components/filter-bar/src/index.ts, libs/components/icon/src/index.ts, libs/components/indicators/src/index.ts, libs/components/lists/src/index.ts, libs/components/manifest-generator/src/index.ts, libs/components/modals/src/index.ts, libs/components/pages/src/index.ts, libs/components/popovers/src/index.ts, libs/components/tabs/testing/src/public-api.ts, libs/components/toast/testing/src/public-api.ts
Reordered export statements; SkyAgGridColumnFilterDatepickerComponent moved in ag-grid exports; SkyIconSvgResolverService moved to top of icon exports; indicators exports consolidate SkyTextHighlightDirective re-exports; module and testing public-api files reflect new ordering conventions.
Component Import Consolidation
libs/components/ag-grid/src/lib/modules/ag-grid/ag-grid-wrapper.component.ts, libs/components/ag-grid/src/lib/modules/ag-grid/cell-renderers/cell-renderer-currency/cell-renderer-currency.component.ts, libs/components/ag-grid/src/lib/modules/ag-grid/cell-validator/ag-grid-cell-validator-tooltip.component.ts, libs/components/filter-bar/src/lib/modules/filter-bar/filter-items/filter-item-*.component.ts, libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.component.ts
Consolidated imports from single modules (e.g., @angular/core/rxjs-interop, @skyux/core, @skyux/popovers) into single multi-specifier import blocks; reorganized RxJS interop imports.
Resource Module Formatting
libs/components/*/src/lib/modules/shared/sky-*-resources.module.ts (50+ files)
Added blank line immediately after /* istanbul ignore file */ comment; no functional changes.
Tile Dashboard Module Import Reordering
apps/e2e/tiles-storybook/src/app/tile-dashboard/**/*.ts, apps/playground/src/app/components/tiles/tile-dashboard/*.ts, libs/components/tiles/src/lib/modules/tiles/tile-dashboard/**/*.ts
Reordered imports across component, module, and fixture files; TileDashboardComponent or test components moved relative to other imports; TileTestContext repositioned in import order.
Route Provider & Other Component Imports
apps/integration/src/app/integrations/field-heights/field-heights.component.spec.ts, apps/playground/src/app/components/action-bars/summary-action-bar/summary-action-bar-modal.component.ts, docs/addressing-breaking-changes/simplified-child-harness-methods/README.md, docs/migrating-deprecated-components/select-field/README.md
Consolidated Angular Router imports; consolidated @skyux/action-bars imports; updated migration documentation examples for harness methods and select-field syntax.
Indicators & Illustration Exports
libs/components/indicators/src/index.ts, libs/components/indicators/src/lib/modules/illustration/illustration.component.spec.ts
Consolidated exports for SkyTextHighlightDirective with both name and Ivy alias; added SkyIllustrationComponent as λ16 export; consolidated Provider import with Component.
Manifest Generator Exports
libs/components/manifest-generator/src/index.ts, libs/components/manifest-generator/src/testing/fixtures/example-packages/foo/src/index.ts
Reordered generateManifest export; adjusted anchor-id module exports to reorder symbols including ____; swapped FooEnum/FooEmptyEnum ordering in foo.enum exports.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Suggested reviewers

  • johnhwhite

🐰 Hop, skip, and reorder!
Plugin swapped with graceful care,
Imports neat in files everywhere,
From old trivago to organize's flare

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly and concisely summarizes the main change: replacing one Prettier plugin with another. It is specific, descriptive, and directly relates to the primary objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch use-prettier-plugin-organize-imports

Comment @coderabbitai help to get the list of available commands and usage tips.

@Blackbaud-SteveBrush Blackbaud-SteveBrush added the risk level (author): 1 No additional bugs expected from this change label Feb 21, 2026
@nx-cloud
Copy link
Copy Markdown

nx-cloud bot commented Feb 21, 2026

View your CI Pipeline Execution ↗ for commit 12e3d45

Command Status Duration Result
nx build integration --baseHref=https://blackba... ✅ Succeeded 7s View ↗
nx build playground --baseHref=https://blackbau... ✅ Succeeded 5s View ↗
nx build code-examples-playground --baseHref=ht... ✅ Succeeded 5s View ↗

☁️ Nx Cloud last updated this comment at 2026-04-03 14:18:04 UTC

@Blackbaud-SteveBrush Blackbaud-SteveBrush marked this pull request as ready for review April 2, 2026 20:52
@Blackbaud-SteveBrush Blackbaud-SteveBrush enabled auto-merge (squash) April 3, 2026 14:14
@Blackbaud-SteveBrush Blackbaud-SteveBrush merged commit 9a8cd4d into main Apr 3, 2026
88 checks passed
@Blackbaud-SteveBrush Blackbaud-SteveBrush deleted the use-prettier-plugin-organize-imports branch April 3, 2026 14:21
johnhwhite added a commit that referenced this pull request Apr 7, 2026
…-issues

* origin/main:
  chore: release 14.0.1 (#4368)
  fix(components/i18n): add support for `ng-packagr@21.2.2` (#4370)
  fix: add missing docs for `skyux-stylelint/no-sky-theme-imports` and `skyux-eslint/no-sky-selectors` rules (#4365)
  chore: replace `@trivago/prettier-plugin-sort-imports` with `prettier-plugin-organize-imports` (#4223)
  chore: 14.0.0 changelog (#4363)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk level (author): 1 No additional bugs expected from this change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants