Opinionated code formatter for TypeScript and JavaScript
Opinionated code formatter for TypeScript and JavaScript.
Deno.version.deno
: 1.40.4Deno.version.v8
: 12.1.285.6Deno.version.typescript
: 5.3.3⚠ WARNING: Due to technical limitations, the main CLI currently does not support Windows. You may download the native version from the GitHub Release page of sane-fmt. The stdio CLI is still supported.
Installation:
deno install \
--allow-read \
--allow-write \
--allow-env \
--name=sane-fmt \
https://deno.land/x/sane_fmt@0.18.1/main.js
Environment Variables:
SANE_FMT_DENO_PREOPENS
: A list of preopened directories. Its delimiter is colon (:
) on Linux/Unix and semicolon (;
) in Windows.Usage:
Opinionated code formatter for TypeScript and JavaScript
Usage: sane-fmt [OPTIONS] [FILES]...
Arguments:
[FILES]...
Files to process
If none are provided, a default set of files will be assumed
Options:
--stdio
Reads unformatted code from standard input, prints formatted code to standard output, then exits
-w, --write
Whether to write or check
--details <DETAILS>
File diff detail
[default: name]
[possible values: count, name, diff]
--hide-passed
Do not log passed filenames
--color <COLOR>
When to use terminal color
[default: auto]
[possible values: auto, never, always]
--log-format <LOG_FORMAT>
Format of log messages
[default: human]
[possible values: human, github-actions]
-I, --include <INCLUDE>
Files whose contents contain paths to target files (`-` means stdin, other strings mean text file)
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Unlike the feature-packed main CLI, the stdio CLI only function is to read TypeScript code from stdin and print formatted code to stdout.
Installation:
deno install --name=sane-fmt-stdio https://deno.land/x/sane_fmt@0.18.1/stdio.js
Usage Example:
echo 'const message="hello world";' | sane-fmt-stdio
Expected Output:
const message = 'hello world'
import Context from 'https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts'
import { u8v } from 'https://deno.land/x/sane_fmt@0.18.1/index.ts'
const context = new Context({
args: ['sane-fmt', 'example-directory/example-file.ts'],
stdin: Deno.stdin.rid,
stdout: Deno.stdout.rid,
stderr: Deno.stderr.rid,
preopens: {
'example-directory': 'example-directory',
},
})
const module = await WebAssembly.compile(u8v)
const instance = await WebAssembly.instantiate(module, {
wasi_snapshot_preview1: context.exports,
})
const status = context.start(instance)
if (status) {
throw new Error(`Program exits with code ${status}`)
}
import Context from 'https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts'
import { u8v } from 'https://deno.land/x/sane_fmt@0.18.1/index.ts'
const context = new Context({
args: ['sane-fmt', '--stdio'],
stdin: Deno.stdin.rid,
stdout: Deno.stdout.rid,
stderr: Deno.stderr.rid,
})
const module = await WebAssembly.compile(u8v)
const instance = await WebAssembly.instantiate(module, {
wasi_snapshot_preview1: context.exports,
})
const status = context.start(instance)
if (status) {
throw new Error(`Program exits with code ${status}`)
}