trivago / prettier-plugin-sort-imports

A prettier plugin to sort imports in typescript and javascript files by the provided RegEx order.
Apache License 2.0
3.28k stars 129 forks source link

Feature: Sort imports by line length #76

Open oscaramos opened 3 years ago

oscaramos commented 3 years ago

Hello,

Add an option to sort imports by line length. For example:

Sort by line length in ascending order:

import { LocationProvider } from "@services/location/location.context";
import { FavouritesProvider } from "@services/favourites/favourites.context";
import { RestaurantsProvider } from "@services/restaurants/restaurants.context";
import { AuthenticationProvider } from "@services/authentication/authentication.context";

Sort by line length in descending order:

import { AuthenticationProvider } from "@services/authentication/authentication.context";
import { RestaurantsProvider } from "@services/restaurants/restaurants.context";
import { FavouritesProvider } from "@services/favourites/favourites.context";
import { LocationProvider } from "@services/location/location.context";
ArtemKurtiakWork commented 1 year ago

Hey, @oscaramos are there any updates on this?

KLewin23 commented 1 year ago

I have made a fork for this in my own org if anyone has an opinion on how they would want this added I can probably come up with something

Aditeya commented 1 year ago

I think a flag in prettier config would be best IMO

module.exports = {
  ...
  "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"],
  "importOrderSeparation": true,
  "importOrderSortSpecifiers": true,
  "importOrderSortByLength": "asc" | "desc"
}
azat-io commented 1 year ago

Looking forward to this feature

azat-io commented 1 year ago

You can use eslint-plugin-perfectionist with fix on save option

dannypk commented 9 months ago

any updates here?

I am using plugin:perfectionist/recommended-line-length and I would like to be sorted "asc" not "desc", I don't want to go through each rule and overwrite that. Is there any option available to change the sort order?

Thanks D

azat-io commented 9 months ago

I am using plugin:perfectionist/recommended-line-length and I would like to be sorted "asc" not "desc"

@dannypk You can set up the plugin to sort in ascending or descending order. By default it sorts in desc.

module.exports = {
  rules: {
    'perfectionist/sort-imports': [
      'error',
      {
        'groups': [
          'side-effect',
          ['side-effect-style', 'style'],
          ['builtin-type', 'type', 'builtin', 'external', 'unknown'],
          [
            'internal-type',
            'parent-type',
            'sibling-type',
            'index-type',
            'internal',
            'parent',
            'sibling',
            'index'
          ],
          ['object']
        ],
        'newlines-between': 'always',
+        'order': 'asc',
        'type': 'line-length'
      }
    ],
  },
}