pnpm add @brlt/prettier@1.8.2
An opinionated Prettier configuration to scaffold my projects. Rulesets included for Bash, JSX/TSX,
React, Svelte, and Vue.
Install
This package is a shared configuration for Prettier - not a replacement
for it. Make sure you install prettier
too!
pnpm add -D @brlt/prettier@1.8.2
yarn add --dev @brlt/prettier@1.8.2
npm i -D @brlt/prettier@1.8.2
Add to package.json
"main": "index.js",
"types": "index.d.ts",
+ "prettier": "@brlt/prettier",
.prettierrc.json
If you don’t want to use package.json
, you can use any of the supported extensions to export a
string
. So .prettierrc.json
would just contain "@brlt/prettier"
, or
"@brlt/prettier/svelte"
, etc.
.prettierrc.js
The above method does not offer a way to extend the configuration to override certain
properties from the shared config. To customize the properties, .prettierrc.js
and merge
@brlt/prettier
with your options.
Example .prettierrc.js
for a Vue project
module.exports = {
...(require('@brlt/prettier/vue') || {}),
semi: false,
trailingComma: 'none',
};
Using Rulesets and Overrides
Included in the package are several different rulesets that I use interchangeably depending on the
project's needs.
@brlt/prettier
- the base ruleset with no overrides.@brlt/prettier/all
- base + all overrides below. For islands-style
projects.@brlt/prettier/vue
- base + Vue overrides@brlt/prettier/bash
- base + Bash overrides@brlt/prettier/react
- base + React overrides@brlt/prettier/svelte
- base + Svelte overrides
Base Ruleset
module.exports = {
arrowParens: 'avoid',
bracketSpacing: false,
bracketSameLine: true,
embeddedLanguageFormatting: 'auto',
htmlWhitespaceSensitivity: 'css',
printWidth: 120,
quoteProps: 'preserve',
semi: true,
singleQuote: true,
proseWrap: 'always',
useTabs: false,
tabWidth: 2,
endOfLine: 'lf',
trailingComma: 'all',
}
TypeScript Definitions
declare module '@brlt/prettier' {
declare const options: PrettierOptions;
export = options as PrettierOptions;
}
Bash Overrides
{
files: [
'.*aliases',
'*.bash*',
'.{dircolors,inputrc}',
'.{exports,extras,functions,path,prompt,profile,aliases}',
'*.*sh',
'.*.*sh',
'.*shrc',
'.*rc',
'.env',
'.env.*',
'Dockerfile',
'.*.Dockerfile',
'.*ignore'
],
options: {
plugins: ['prettier-plugin-sh'],
tabWidth: 4,
printWidth: 80,
parser: 'sh',
},
excludeFiles: [
'.bash_history'
]
}
Using @brlt/prettier/bash
in package.json
- "prettier": "@brlt/prettier",
+ "prettier": "@brlt/prettier/bash",
React Overrides
{
files: ['*.jsx', '*.tsx', '*.mdx'],
options: {
semi: false,
jsxSingleQuote: false,
singleAttributePerLine: true,
bracketSameLine: true,
vueIndentScriptAndStyle: true,
},
}
Using @brlt/prettier/react
in package.json
- "prettier": "@brlt/prettier",
+ "prettier": "@brlt/prettier/react",
Svelte Overrides
{
files: ['*.svelte'],
options: {
semi: false,
tabWidth: 2,
printWidth: 100,
singleQuote: false,
trailingComma: 'es5',
bracketSameLine: true,
bracketSpacing: false,
jsxSingleQuote: false,
singleAttributePerLine: true,
htmlWhitespaceSensitivity: 'strict',
arrowParens: 'avoid',
parser: 'svelte',
plugins: ['prettier-plugin-svelte'],
svelteStrictMode: true,
svelteAllowShorthand: true,
svelteBracketNewLine: false,
svelteIndentScriptAndStyle: true,
svelteSortOrder: 'scripts-options-markup-styles',
}
}
Using @brlt/prettier/svelte
in package.json
- "prettier": "@brlt/prettier",
+ "prettier": "@brlt/prettier/svelte",
Vue Overrides
{
files: ['*.vue'],
options: {
parser: 'vue',
trailingComma: 'all',
semi: false,
proseWrap: 'always',
singleQuote: true,
jsxSingleQuote: false,
bracketSameLine: true,
bracketSpacing: true,
singleAttributePerLine: true,
vueIndentScriptAndStyle: true,
}
}
Using @brlt/prettier/vue
in package.json
- "prettier": "@brlt/prettier",
+ "prettier": "@brlt/prettier/vue",
MIT ©
Nicholas Berlette