Skip to content

Instantly share code, notes, and snippets.

@o-az
Last active December 26, 2025 03:15
Show Gist options
  • Select an option

  • Save o-az/b230cb30d4f9b880c633bfacc35b04c4 to your computer and use it in GitHub Desktop.

Select an option

Save o-az/b230cb30d4f9b880c633bfacc35b04c4 to your computer and use it in GitHub Desktop.
`oxfmt` & `oxlint` TypeScript-based config file

Proposing accepting TypeScript-based config file/s for oxfmt and oxlint.

Proposed options:

  • Separate config files: oxlint.config.ts, oxfmt.config.ts
  • Single config file for both: oxc.config.ts

Separate

oxfmt.config.ts variation 1:

import type { Config } from 'oxfmt'
import {
  oxfmtPluginTailwind,
  type Options as TailwindOptions
} from 'oxfmt/plugins/tailwindcss'

export default {
  trailingComma: 'none',
  experimentalSortImports: { order: 'asc' },
  plugins: [
    [
      oxfmtPluginTailwind,
      {
        tailwindPreserveWhiteSpace: true,
        tailwindStylesheet: './src/global.css',
        // ...
      } satisfies TailwindOptions
    ]
  ],
  // ...
} satisfies Config

oxfmt.config.ts variation 2:

import { defineConfig } from 'oxfmt'
import { oxfmtPluginTailwind } from 'oxfmt/plugins/tailwindcss'

export default defineConfig({
  trailingComma: 'none',
  experimentalSortImports: { order: 'asc' },
  plugins: [
    oxfmtPluginTailwind({
      tailwindPreserveWhiteSpace: true,
      tailwindStylesheet: './src/global.css',
      // ...
    })
  ],
  // ...
})

oxlint.config.ts variation 1:

import type { Config } from 'oxlint'
import type { Options as UnicornOptions } from 'oxlint/plugins'

export default {
  rules: {
    'oxc/approx-constant': 'warn'
  },
  plugins: [
    'unicorn',
    { /* ... */ } satisfies UnicornOptions
  ],
  overrides: [ /* ... */ ]
} satisfies Config

oxlint.config.ts variation 2:

import { defineConfig } from 'oxlint'
import { oxlintPluginUnicorn } from 'oxlint/plugins/unicorn'

export default defineConfig({
  rules: {
    'oxc/approx-constant': 'warn'
  },
  plugins: [
    oxlintPluginUnicorn({ /* ... */ })
  ],
  overrides: [ /* ... */ ]
})

oxc.config.ts. Inspired by vite/vitest config API:

import { defineConfig as defineOxfmtConfig } from 'oxfmt'
import { oxfmtPluginTailwind } from 'oxfmt/plugins/tailwindcss'

import { defineConfig as defineOxlintConfig } from 'oxlint'
import { oxlintPluginUnicorn } from 'oxlint/plugins/unicorn'

import { defineConfig, mergeConfig } from 'oxc/config'

const oxfmtConfig = defineOxfmtConfig({ /* ... */ })

const oxlintConfig = defineOxlintConfig({ /* ... */ })

export default mergeConfig(oxfmtConfig, oxlintConfig)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment