Nonchalant Programming Master


    0.13.0 • Public • Published


    GitHub Actions Status Travis Build Status

    Opinionated code formatter for TypeScript and JavaScript.


    • Prefer single quotes.
    • No semicolons.
    • Trailing commas for multi-line.
    • No function parentheses for arrow function with single argument.
    • Multi-line union and intersection use consistent leading separator.


    Read exports/sane-fmt.typescript.json, src/, and tests/ for more information.


    Download prebuilt binaries

    Go to the release page.


    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:

    For macOS:

    For Windows:

    From Deno Registry


    From Arch User Repository

    Download source and compile

    paru -S sane-fmt


    Download prebuilt binary

    paru -S sane-fmt-bin


    Use with Dprint

    If you already have Dprint, you can skip installing sane-fmt binary. Create a dprint.json file with the following content:

      "$schema": "",
      "projectType": "openSource",
      "extends": "",
      "includes": [
      "excludes": [
      "plugins": [


    • Replace master in the "extends" line above with appropriate sane-fmt version.
    • Replace ${DPRINT_TYPESCRIPT_VERSION} above with appropriate dprint-plugin-typescript version.

    See also:


    Format all TypeScript and JavaScript files

    sane-fmt --write

    This command would reformat all TypeScript and JavaScript files.

    Check for all TypeScript and JavaScript files


    This command would check all TypeScript and JavaScript files.

    Format only some files

    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

    sane-fmt --write src/

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

    Check all TypeScript and JavaScript files in a list

    Each line of list.txt is a path to a TypeScript/JavaScript file.

    sane-fmt --include=list.txt

    Check all TypeScript and JavaScript files from a Git repo

    git ls-files | grep -Ei '\.(js|ts)$' | sane-fmt --include=-

    GitHub Actions

    sane-fmt also provides a convenient way to integrate with GitHub Actions. To use it, simply add --log-format=github-actions, like so:

    sane-fmt --log-format=github-actions --details=diff

    When this command is executed within a GitHub Actions runner, it will:

    • Annotates unformatted files.
    • Group diffs by file names (if --details=diff).
    • Export total, changed, and unchanged as outputs.

    Recommendation: This action will install sane-fmt and execute it for you.

    Print help message

    sane-fmt --help

    Shell Completions

    If you installed sane-fmt via the AUR, completions for bash, fish, and zsh are already installed for you.

    Shell completion files are located in ./exports directory of this repo or the Release Page with name in form of completion.<extension> where <extension> is corresponding file extension of target language. Install them to appropriate locations in your filesystem to use.

    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. You can think of it as a portable Dprint config file that is always up-to-date.

    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. I also don't like copying my config files back-and-forth to update them.

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

    How to customize the rules?

    Customization is antithetical to the purpose of this project, and as such, the sane-fmt command does not have customization capability.

    However, if you still want a copy of sane-fmt with your own customized rules, do one of the following:

    • Use sane-fmt as a library crate.
    • Fork this project.
    • Just use dprint.


    MIT © Hoàng Văn Khải




    npm i @sane-fmt/x86_64-pc-windows-msvc

    DownloadsWeekly Downloads






    Unpacked Size

    3.27 MB

    Total Files


    Last publish


    • khai96_