Skip to content

refactor: sort all top-level imports#337

Merged
ezolenko merged 1 commit into
ezolenko:masterfrom
agilgur5:refactor-organize-imports
Jun 1, 2022
Merged

refactor: sort all top-level imports#337
ezolenko merged 1 commit into
ezolenko:masterfrom
agilgur5:refactor-organize-imports

Conversation

@agilgur5

@agilgur5 agilgur5 commented Jun 1, 2022

Copy link
Copy Markdown
Collaborator

Summary

Sort imports by external deps first, then local/internal deps next (AKA absolute imports first, then relative imports)

Details

- basically, general format is:
  ```ts
  import x from "external-dep"

  import y from "./internal-dep"
  ```
  - so external deps, new line, then internal/local deps
  - with some further sorting within there, like trying to keep Node
    built-ins (e.g. `path`) at the top half of externals, then core deps
    like `typescript`, then any other external deps
    - and similar for internal deps -- core internals at the top half of
      internals, then any other internal deps
    - just to keep things consistent between files -- makes the top
      easier to read through when it's similar between files
    - also makes it easier for contributors to understand where to put
      imports, as there's a sorting already there

- this is how I generally sort my imports and how I wrote most of the
  unit test suite's imports as well

- there is automation for this that we should probably add once TSLint
  is replaced here; some previous art:
  - https://github.com/trivago/prettier-plugin-sort-imports
  - https://github.com/lydell/eslint-plugin-simple-import-sort/
  - Older:
    - https://github.com/renke/import-sort/tree/master/packages/import-sort-style-module
    - https://github.com/mcdougal/js-isort
    - inspired by Python's `isort` ofc
@agilgur5 agilgur5 added the kind: internal Changes only affect the internals, and _not_ the public API or external-facing docs label Jun 1, 2022
@ezolenko ezolenko merged commit b08f272 into ezolenko:master Jun 1, 2022
@agilgur5 agilgur5 deleted the refactor-organize-imports branch July 2, 2023 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind: internal Changes only affect the internals, and _not_ the public API or external-facing docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants