Skip to content

Prettier Configuration

pjt provides Prettier configurations for consistent code formatting.

Standard configuration with common settings.

prettier.config.js
import pjt from 'pjt/prettier';
export default pjt.config;

Customized configuration for specific needs.

import pjt from 'pjt/prettier';
export default {
...pjt.config,
semi: false,
singleQuote: true
};

Prettier configurations are in src/prettier/:

src/prettier/
├── index.ts # Main export
└── config.ts # Configuration
export default {
// Formatting
printWidth: 80,
tabWidth: 2,
useTabs: false,
// Brackets
semi: true,
singleQuote: false,
// Commas
trailingComma: 'es5',
// Spaces
bracketSpacing: true,
bracketSameLine: false,
// Other
arrowParens: 'avoid',
endOfLine: 'lf'
};
export default {
...pjt.config,
// TypeScript specific
parser: 'typescript'
};
export default {
...pjt.config,
// JSX specific
jsxSingleQuote: false,
jsxBracketSameLine: false
};

Add to .vscode/settings.json:

{
"prettier.configPath": "prettier.config.js",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}

Prettier will automatically use the configuration.

Terminal window
# Format all files
npx prettier --write .
# Check formatting
npx prettier --check .
# Format specific files
npx prettier --write "src/**/*.js"
Terminal window
# Install husky
npm install husky --save-dev
# Add hook
npx husky add .husky/pre-commit "npx prettier --check . && npx eslint ."
{
"lint-staged": {
"*.{js,ts,jsx,tsx}": [
"prettier --write",
"eslint --fix"
]
}
}

Create .prettierignore:

# Standard ignore
node_modules/
dist/
build/
# Project specific
coverage/
*.min.js

Use the same configuration across the team.

Enable format on save in editors.

Always check formatting before commit.

Define team standard for options.

prettier.config.js
import pjt from 'pjt/prettier';
export default {
...pjt.config,
// Team standard
semi: false,
singleQuote: true,
trailingComma: 'all',
// Project specific
printWidth: 100,
tabWidth: 2
};
Terminal window
# Check configuration
npx prettier --config prettier.config.js --check file.js
# Check ignore
npx prettier --ignore-path .prettierignore --check .
// Disable ESLint rules that overlap
{
rules: {
'quotes': 'off',
'comma-dangle': 'off'
}
}
  • Use .prettierignore
  • Format only changed files
  • Use fast-glob for large projects