2.0.2 • Published 7 months ago
sortier v2.0.2
Sortier
An opinionated Code Sorter
Sortier is an opinionated code sorter similar to how Prettier is a opinionated code formatter. Given a file, it parses then sorts and rearranges source code in a consistent way.
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 unless there is only one comment above all the lines of code
Example Input
// Imports are ordered by path
// ImportSpecifiers are also ordered
import {
/* a2 comment */
a2,
/* a1 comment */
a1 } from "./a";
// c2 import comment
import { 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;
// Since this is the only comment for this context block, this comment stays where it is
prop4: boolean;
prop2: boolean;
};
Example Output
// Imports are ordered by path
// ImportSpecifiers are also ordered
// c2 import comment
import { c2 } from "c";
import {
/* a1 comment */
a1,
/* a2 comment */
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;
// Since this is the only comment for this context block, this comment stays where it is
prop2: boolean;
prop4: boolean;
};
Options
And more to come!
Pre-commit Hook
See our Install documentation
Contributing
2.0.2
7 months ago
2.0.1
9 months ago
2.0.0-beta.0
1 year ago
2.0.0
1 year ago
1.0.1
2 years ago
1.0.0
2 years ago
1.0.1-beta.0
2 years ago
1.0.0-beta.5
2 years ago
1.0.0-beta.11
2 years ago
1.0.0-beta.12
2 years ago
1.0.0-beta.10
2 years ago
1.0.0-beta.6
2 years ago
1.0.0-beta.7
2 years ago
1.0.0-beta.8
2 years ago
1.0.0-beta.9
2 years ago
1.0.0-beta.2
3 years ago
1.0.0-beta.3
2 years ago
1.0.0-beta.4
2 years ago
1.0.0-beta.1
3 years ago
1.0.0-beta.0
3 years ago