Oxc (oxlint and oxfmt)
Learn how to use oxlint and oxfmt in your Turborepo projects.
Set up Oxc tools in a Turborepo
Set up oxlint and oxfmt in this Turborepo. 1) Install the tools 2) Create scripts 3) Set up turbo.json tasks Walk me through each step. Use the Turborepo skill if it is available. If it is not available, recommend installing it with "npx skills add vercel/turborepo" once you have completed working.
Oxc is a collection of high-performance JavaScript and TypeScript tools written in Rust, including oxlint (a fast linter) and oxfmt (a fast formatter).
Using Oxc tools with Turborepo
Similar to Biome, oxlint and oxfmt are extraordinarily fast tools. For this reason, we recommend using Root Tasks rather than creating separate scripts in each of your packages.
Caching behavior
Using oxlint or oxfmt at the root of the project will result in cache misses for all tasks when you upgrade versions or change configuration. If you prefer the tradeoff of higher cache hit ratios in these situations over less configuration, you can still run these tools in separate scripts like the other recommendations in our guides.
Setting up oxlint
Install oxlint
First, install oxlint in your repository:
pnpm add --save-dev oxlintyarn add --dev oxlintnpm install --save-dev oxlintbun add --dev oxlintCreate scripts
Add scripts to the root package.json of your repository:
{
"scripts": {
"lint": "oxlint .",
"lint:fix": "oxlint --fix ."
}
}Create root tasks
Register the scripts to Turborepo as Root Tasks:
{
"tasks": {
"//#lint": {},
"//#lint:fix": {}
}
}You can now run turbo run lint to lint your entire repository.
Setting up oxfmt
oxfmt is a fast code formatter for JavaScript and TypeScript, designed to be a drop-in replacement for Prettier.
oxfmt is experimental
oxfmt is currently in alpha and may not have full feature parity with Prettier. Check the oxfmt documentation for the latest status and supported options.
Install oxfmt
Install oxfmt as a dev dependency:
pnpm add --save-dev oxfmtyarn add --dev oxfmtnpm install --save-dev oxfmtbun add --dev oxfmtCreate scripts
Add formatting scripts to the root package.json:
{
"scripts": {
"format": "oxfmt --check",
"format:fix": "oxfmt ."
}
}Create root tasks
Register the scripts to Turborepo:
{
"tasks": {
"//#format": {},
"//#format:fix": {}
}
}You can now run turbo run format to check formatting and turbo run format:fix to format your code.
Using oxlint and oxfmt together
For repositories using both tools, you can orchestrate them with a unified quality task:
{
"scripts": {
"lint": "oxlint .",
"lint:fix": "oxlint --fix .",
"format": "oxfmt --check",
"format:fix": "oxfmt ."
}
}{
"tasks": {
"//#quality": {
"dependsOn": ["//#lint", "//#format"]
},
"//#quality:fix": {
"dependsOn": ["//#lint:fix", "//#format:fix"]
},
"//#lint": {},
"//#lint:fix": {},
"//#format": {},
"//#format:fix": {}
}
}With this configuration:
- Run
turbo run qualityto check both linting and formatting - Run
turbo run quality:fixto fix both linting and formatting issues