The zayne() factory function creates a modular Prettier configuration by combining base settings, import sorting, Tailwind CSS support, and Astro formatting.
Function Signature
const zayne : (
options ?: OptionsPrettierConfig ,
... extraConfigs : ResolvedPrettierConfig []
) => Promise < ResolvedPrettierConfig >
Parameters
options
OptionsPrettierConfig
default: "{}"
Configuration object to enable and customize different features. base
boolean | Config
default: "true"
Opinionated base Prettier defaults including settings for tabs, print width, quotes, and trailing commas.
sortImports
boolean | OptionsSortImports
default: "true"
Enables @ianvs/prettier-plugin-sort-imports with distance-based sorting logic. When enabled, imports are organized by proximity:
User patterns (custom importOrder)
URLs (remote modules like https://esm.sh/...)
Protocols (node:, bun:, jsr:, npm:)
Third-party packages
Aliases (@/, #, ~, $, %)
Relative/absolute paths
CSS files (always last)
tailwindcss
boolean | OptionsTailwindCss
default: "false"
Enables Tailwind CSS class sorting via three merged plugins:
prettier-plugin-tailwindcss (class sorting)
prettier-plugin-classnames (multi-line formatting)
prettier-plugin-merge (plugin coordination)
Supports Tailwind v4 with tailwindStylesheet option. astro
boolean | OptionsAstro
default: "false"
Enables prettier-plugin-astro for formatting .astro files with proper parser support.
Additional Prettier configuration objects to merge. Array properties (like plugins and overrides) are merged intelligently without duplicates, while other values overwrite.
Returns
config
Promise<ResolvedPrettierConfig>
The combined Prettier configuration object ready to export.
Examples
Basic Usage
// prettier.config.js
import { zayne } from "@zayne-labs/prettier-config" ;
export default zayne ({
base: true ,
sortImports: true ,
tailwindcss: true ,
astro: true ,
}) ;
With Custom Options
import { zayne } from "@zayne-labs/prettier-config" ;
export default zayne (
{
base: true ,
sortImports: {
importOrder: [ "^@company/" ], // Custom import group at top
importOrderCaseSensitive: true ,
} ,
tailwindcss: {
tailwindStylesheet: "./src/styles.css" ,
customFunctions: [ "cn" , "clsx" ],
} ,
},
// Extra config to merge
{
printWidth: 120 ,
semi: true ,
}
) ;
Minimal Configuration
import { zayne } from "@zayne-labs/prettier-config" ;
// Uses default base + sortImports
export default zayne () ;
Extending with Custom Config
import { zayne } from "@zayne-labs/prettier-config" ;
export default zayne (
{ tailwindcss: true },
{
useTabs: false ,
printWidth: 100 ,
singleQuote: true ,
}
) ;
Plugin Auto-Installation
When you enable a feature, the factory checks if required plugins are installed. If missing, it prompts you to auto-install them when running prettier --write ..
This keeps your node_modules lean by only installing plugins you actually use.
Configuration Merging
The factory intelligently merges configurations:
Arrays (plugins, overrides): Deduplicated and combined
Objects : Shallow merged with later values overwriting earlier ones
Primitives : Last value wins