sane-fmt
Opinionated code formatter for TypeScript and JavaScript.
- Main Repo: sane-fmt/sane-fmt
- Version: 0.16.0
Usage in Deno
Deno.version.deno
: 1.8.0Deno.version.v8
: 9.0.257.3Deno.version.typescript
: 4.2.2
Command Line Interface
Main CLI
⚠ 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 \
--unstable \
--allow-read \
--allow-write \
--allow-env \
--name=sane-fmt \
https://deno.land/x/sane_fmt@0.16.0/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 information (use `-h` for a summary)
-V, --version
Print version information
Stdio CLI
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 \
--unstable \
--name=sane-fmt-stdio \
https://deno.land/x/sane_fmt@0.16.0/stdio.js
Usage Example:
echo 'const message="hello world";' | sane-fmt-stdio
Expected Output:
const message = 'hello world'
Programming Interface
Example: Format a file
import Context from 'https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts'
import { u8v } from 'https://deno.land/x/sane_fmt@0.16.0/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}`)
}
Example: Read unformatted input and print formatted output
import Context from 'https://deno.land/std@0.92.0/wasi/snapshot_preview1.ts'
import { u8v } from 'https://deno.land/x/sane_fmt@0.16.0/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}`)
}