@wasm-fmt/shfmt
v0.2.4
Published
A wasm based shell script formatter
Maintainers
Readme
Install
npm install @wasm-fmt/shfmtnpx jsr add @fmt/shfmtUsage
Node.js / Deno / Bun / Bundler
import { format } from "@wasm-fmt/shfmt";
const source = `#!/bin/bash
echo "hello world"
`;
const formatted = format(source);
console.log(formatted);With options:
const formatted = format(source, "script.sh", {
indent: 2,
binaryNextLine: true,
switchCaseIndent: false,
spaceRedirects: true,
funcNextLine: false,
minify: false,
singleLine: false,
simplify: true,
});Web
For web environments, you need to initialize WASM module manually:
import init, { format } from "@wasm-fmt/shfmt/web";
await init();
const source = `#!/bin/bash
echo "hello world"
`;
const formatted = format(source);
console.log(formatted);Vite
import init, { format } from "@wasm-fmt/shfmt/vite";
await init();
// ...Entry Points
.- Auto-detects environment (Node.js uses node, Webpack uses bundler, default is ESM)./node- Node.js environment (no init required)./esm- ESM environments like Deno (no init required)./bundler- Bundlers like Webpack (no init required)./web- Web browsers (requires manual init)./vite- Vite bundler (requires manual init)
Build from source
# 1. install Go https://go.dev/doc/install
# 2. install TinyGo https://tinygo.org/getting-started/install/
# 3. clone this repo
git clone https://github.com/wasm-fmt/shfmt.git
# 4. install dependencies inside the repo
npm
# 5. build
npm run build
# 6. test
npm run test:nodeCredits
Thanks to:
- The shfmt project created by Daniel Martí
