sane-fmt

GitHub Actions Status Travis Build Status

Opinionated code formatter for TypeScript and JavaScript.

Rules

Preview.

Read rules/mod.rs and tests/rules.rs for more information.

Installation

Download prebuilt binaries

Go to the release page.

From crates.io

cargo install sane-fmt

From NPM

WASM (all platform)

npm i -g @sane-fmt/wasm32-wasi

Native binaries

The WASM package while work on all platform, it is slow to start. For better speed, install one of the following packages instead:

For Linux: * @sane-fmt/x8664-unknown-linux-gnu * @sane-fmt/x8664-unknown-linux-musl

For macOS: * @sane-fmt/x86_64-apple-darwin

For Windows: * @sane-fmt/x8664-pc-windows-gnu * @sane-fmt/x8664-pc-windows-msvc

From Arch User Repository

Download source and compile

yay -S sane-fmt

Download prebuilt binary

yay -S sane-fmt-bin

Usage

Format all TypeScript and JavaScript files

sh sane-fmt --write

This command would reformat all TypeScript and JavaScript files.

Check for all TypeScript and JavaScript files

sh sane-fmt

This command would check all TypeScript and JavaScript files.

Format only some files

sh sane-fmt --write foo.ts bar.js

This command would only reformat foo.ts and bar.js.

Format all TypeScript and JavaScript files in a directory

sh sane-fmt --write src/

This command would reformat all TypeScript and JavaScript files within src/ directory.

Print help message

sh sane-fmt --help

Become a Patron

My Patreon Page.

Frequently Asked Questions

What is this program?

sane-fmt is an opinionated code formatter for TypeScript and JavaScript powered by dprint.

What is the point of this program?

I want to apply a single, consistent formatting for all my codes regardless of environment without complex tooling.

I have considered using Prettier or Dprint, but that would mean having to set up Node.js even in non-Node.js environments.

On the other hand, setting up sane-fmt is simple: just download the binary.

How to customized the rules?

Customization is antithetical to the purpose of this project. Just fork this project if you want your own version of sane-fmt, or just use Dprint if you want convenient customization.

I plan to divide this package into multiple reusable crates in the future, this would allow crate user to supply their own rules to create their own version of sane-fmt. However, I will never make the rule configurable for the end-user.

License

MIT © Hoàng Văn Khải