@obinexusltd/obix-config-prettier
v0.1.0
Published
OBIX Prettier configuration for OBIX CLI and SDK packages
Readme
@obinexusltd/obix-config-prettier
Prettier 3 configuration for OBIX SDK packages — part of the
@obinexusltd/obix-monorepo.
Provides typed factory functions, a ready-to-use prettier.config.js, and profile-based configuration presets for formatting OBIX SDK source code with Prettier 3.
Installation
Registered automatically as an npm workspace package:
# From monorepo root
npm installTo add it as a dependency in a consumer package:
{
"devDependencies": {
"@obinexusltd/obix-config-prettier": "workspace:*"
}
}Package Structure
packages/config/prettier/
├── prettier.config.js ← Base config (./base export)
└── src/
└── index.ts ← TypeScript programmatic API (compiled to dist/)Programmatic API
import {
createBaseConfig,
createLibraryConfig,
createAppConfig,
resolveConfig,
} from '@obinexusltd/obix-config-prettier';
// Base — OBIX SDK defaults (printWidth: 100, singleQuote, trailingComma: 'all')
export default createBaseConfig();
// Library — wider line length for verbose type signatures (printWidth: 120)
export default createLibraryConfig({ trailingComma: 'all' });
// App — narrower line length for readable application code (printWidth: 80)
export default createAppConfig();
// Resolve by profile name
export default resolveConfig('library', { semi: false });Factory Functions
| Function | Description |
|----------|-------------|
| createBaseConfig(opts?) | Standard OBIX defaults — printWidth: 100, singleQuote, trailingComma: 'all' |
| createLibraryConfig(opts?) | SDK/library packages — printWidth: 120 for long type signatures |
| createAppConfig(opts?) | Browser/CLI apps — printWidth: 80 for readable application code |
| resolveConfig(profile, opts?) | Delegates by 'base' \| 'library' \| 'app' |
ObixPrettierOptions
interface ObixPrettierOptions {
printWidth?: number; // default: 100
tabWidth?: number; // default: 2
useTabs?: boolean; // default: false
semi?: boolean; // default: true
singleQuote?: boolean; // default: true
jsxSingleQuote?: boolean; // default: false
trailingComma?: 'all' | 'es5' | 'none'; // default: 'all'
bracketSpacing?: boolean; // default: true
bracketSameLine?: boolean; // default: false
arrowParens?: 'always' | 'avoid'; // default: 'always'
endOfLine?: 'lf' | 'crlf' | 'cr' | 'auto'; // default: 'lf'
proseWrap?: 'always' | 'never' | 'preserve';// default: 'preserve'
htmlWhitespaceSensitivity?: 'css' | 'strict' | 'ignore'; // default: 'css'
embeddedLanguageFormatting?: 'auto' | 'off'; // default: 'auto'
overrides?: Array<Record<string, unknown>>; // default: []
}Static Descriptors
import {
baseConfig,
libraryConfig,
appConfig,
} from '@obinexusltd/obix-config-prettier';Using the Config File Directly
Reference from your project's prettier.config.js
// prettier.config.js — use OBIX base config directly
export { default } from '@obinexusltd/obix-config-prettier/base';Extend with project-specific overrides
// prettier.config.js
import base from '@obinexusltd/obix-config-prettier/base';
export default {
...base,
printWidth: 80, // narrower for this project
semi: false, // no semicolons
};Reference via package.json
{
"prettier": "@obinexusltd/obix-config-prettier/base"
}Note: The
package.json"prettier"key does not support the./basesubpath export directly in all tooling versions. Use theprettier.config.jsfile reference form for guaranteed compatibility.
Profile Reference
| Profile | printWidth | singleQuote | trailingComma | Best for |
|---------|-------------|---------------|-----------------|----------|
| base | 100 | true | 'all' | General SDK packages |
| library | 120 | true | 'all' | Packages with verbose generic/type signatures |
| app | 80 | true | 'all' | Browser apps, CLI tools |
File-Specific Overrides (built-in)
All factory functions include sensible per-file-type overrides automatically:
| File pattern | Parser | printWidth | Notes |
|---|---|---|---|
| *.ts, *.tsx | typescript | same as profile | Explicit TypeScript parser |
| *.json, *.jsonc | json | 80 | No trailing commas |
| *.md, *.mdx | markdown | 80 | proseWrap: 'always' |
| *.yml, *.yaml | yaml | — | singleQuote: false |
Peer Dependencies
Required:
{
"devDependencies": {
"prettier": ">=3.0.0"
}
}Optional plugins:
{
"devDependencies": {
"@prettier/plugin-xml": "*",
"prettier-plugin-organize-imports": "*"
}
}Author
Nnamdi Michael Okpala — OBINexus <[email protected]>
Part of the OBIX Heart/Soul UI/UX SDK monorepo.
