mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-10 13:48:18 +00:00
51 lines
1.5 KiB
Markdown
51 lines
1.5 KiB
Markdown
# Ruff WASM
|
|
|
|
> **⚠️ WARNING: This API is experimental and may change at any time**
|
|
|
|
[**Docs**](https://docs.astral.sh/ruff/) | [**Playground**](https://play.ruff.rs/)
|
|
|
|
An extremely fast Python linter and code formatter, written in Rust.
|
|
|
|
This is a WASM version of the Ruff API which can be used to lint/format Python in a browser environment.
|
|
|
|
There are multiple versions for the different wasm-pack targets. See [here](https://rustwasm.github.io/docs/wasm-bindgen/reference/deployment.html) for more info on targets.
|
|
|
|
- [Bundler](https://www.npmjs.com/package/@astral-sh/ruff-wasm-bundler)
|
|
- [Web](https://www.npmjs.com/package/@astral-sh/ruff-wasm-web)
|
|
- [Node.js](https://www.npmjs.com/package/@astral-sh/ruff-wasm-nodejs)
|
|
|
|
## Usage
|
|
|
|
This example uses the wasm-pack web target and is known to work with Vite.
|
|
|
|
```ts
|
|
import init, { Workspace, type Diagnostic } from '@astral-sh/ruff-api';
|
|
|
|
const exampleDocument = `print('hello'); print("world")`
|
|
|
|
await init(); // Initializes WASM module
|
|
|
|
// These are default settings just to illustrate configuring Ruff
|
|
// Settings info: https://docs.astral.sh/ruff/settings
|
|
const workspace = new Workspace({
|
|
'line-length': 88,
|
|
'indent-width': 4,
|
|
format: {
|
|
'indent-style': 'space',
|
|
'quote-style': 'double',
|
|
},
|
|
lint: {
|
|
select: [
|
|
'E4',
|
|
'E7',
|
|
'E9',
|
|
'F'
|
|
],
|
|
},
|
|
});
|
|
|
|
// Will contain 1 diagnostic code for E702: Multiple statements on one line
|
|
const diagnostics: Diagnostic[] = workspace.check(exampleDocument);
|
|
|
|
const formatted = workspace.format(exampleDocument);
|
|
```
|