npm install @wasm-fmt/ruff_fmtnpx jsr add @fmt/ruff-fmtimport { format } from "@wasm-fmt/ruff_fmt";
const input = `x = { 'a':37,'b':42,
'c':927}
y = 'hello ''world'
z = 'hello '+'world'
a = 'hello {}'.format('world')
class foo ( object ):
def f (self ):
return 37*-+2
def g(self, x,y=42):
return y
def f ( a ) :
return 37+-+a[42-x : y**3]`;
const formatted = format(input, "main.py", {
indent_style: "space",
indent_width: 4,
line_width: 88,
quote_style: "double",
magic_trailing_comma: "respect",
});
console.log(formatted);For web environments, you need to initialize WASM module manually:
import init, { format } from "@wasm-fmt/ruff_fmt/web";
await init();
const input = `x = { 'a':37,'b':42,
'c':927}`;
const formatted = format(input, "main.py");
console.log(formatted);import init, { format } from "@wasm-fmt/ruff_fmt/vite";
await init();
// ...Add "@wasm-fmt/ruff_fmt" to optimizeDeps.exclude in your vite config:
{
"optimizeDeps": {
"exclude": ["@wasm-fmt/ruff_fmt"]
}
}.- 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)
Note
dpint plugin is deprecated, please use https://dprint.dev/plugins/ruff instead.
Ruff is an extremely fast Python linter, written in Rust.
This package is a WebAssembly build of Ruff formatter, with a JavaScript wrapper.