@snowcoders/sortierdeprecated

An opionated code sorter

Usage no npm install needed!

<script type="module">
  import snowcodersSortier from 'https://cdn.skypack.dev/@snowcoders/sortier';
</script>

README

Sortier

An opinionated Code Sorter

npm (scoped) CircleCI branch Coverage Status

Sortier is an opinionated code sorter similar to how Prettier is a opinionated code formatter. Given a file, it parses then figures out how to sort and rearrange source code in a consistent way.

Documentation

Examples of what sortier will sort in JavaScript:

  • Import statements
  • Import specifiers
  • Union types
  • Keys and properties within objects and types
  • React JSX properties
  • And more!

It should work with JavaScript ES6, Flow, Typescript, HTML and Json but if you find a piece of code that after sorting doesn't look as expected, feel free to open an issue in Github!

How to run it

sortier "[glob-file-path]"

General things to keep in mind

  • Blank lines are treated as context breaks... Sortier will not sort through them
  • Comments will stay with the line they comment (see Props example below)

Example Input

import {
        a2,
        a1 }
        from "./a";
import {
       /*Absolute imports move to the top*/ c2
} from "c";
import { b3, b1 } from "./b";

// Blank lines act like context barriers and will divide sorting blocks
import { b2 } from "b1";

export type Props = {
  // Prop3 comment
  prop3: string,
  callback2: () => void,
  // Prop1 comment
  prop1: number,
  callback1(): void,
}

Example Output

import {
       /*Absolute imports move to the top*/ c2
} from "c";
import {
        a1,
        a2 }
        from "./a";
import { b1, b3 } from "./b";

// Blank lines act like context barriers and will divide sorting blocks
import { b2 } from "b1";

export type Props = {
  // Prop1 comment
  prop1: number,
  // Prop3 comment
  prop3: string,
  callback1(): void,
  callback2: () => void,
}

Options

And more to come!

Pre-commit Hook

See our Install documentation