CLI tool for formatting JavaScript files using both Prettier and ESLint
npx @tessl/cli install tessl/npm-prettier-eslint-cli@8.0.0prettier-eslint-cli is a command-line interface for formatting JavaScript files using both Prettier and ESLint. It combines Prettier's formatting capabilities with ESLint's linting rules, allowing developers to maintain consistent code style while respecting project-specific ESLint configurations.
npm install --save-dev prettier-eslint-cliThis package provides a CLI binary rather than importable modules:
# Global installation
npm install -g prettier-eslint-cli
prettier-eslint "src/**/*.js"
# Local installation (recommended)
npm install --save-dev prettier-eslint-cli
npx prettier-eslint "src/**/*.js"# Format files matching a glob pattern
prettier-eslint "src/**/*.js"
# Format files and write changes in-place
prettier-eslint --write "src/**/*.js"
# Format code from stdin
echo "const foo = 'bar'" | prettier-eslint --stdin
# Check for formatting differences (useful in CI)
prettier-eslint --list-different "src/**/*.js"In package.json scripts:
{
"scripts": {
"format": "prettier-eslint --write \"src/**/*.js\"",
"format:check": "prettier-eslint --list-different \"src/**/*.js\""
}
}prettier-eslint-cli operates as a file processing pipeline:
The tool can process files from glob patterns or stdin, with extensive configuration options for both Prettier and ESLint behavior.
Process multiple files using glob patterns with support for ignore files and custom patterns.
prettier-eslint <globs>... [options]
# Examples:
prettier-eslint "src/**/*.js"
prettier-eslint "lib/**/*.js" "test/**/*.js"
prettier-eslint "**/*.{js,jsx,ts,tsx}"Glob Pattern Options:
**/node_modules/** unless explicitly includedControl how formatted results are output - to stdout, written in-place, or as difference reports.
# Write formatted content to stdout (default)
prettier-eslint "src/**/*.js"
# Write changes in-place to original files
prettier-eslint --write "src/**/*.js"
# List files that would be changed (CI mode)
prettier-eslint --list-different "src/**/*.js"Process code from standard input for integration with editors and pipes.
# Format code from stdin
echo "const foo = 'bar'" | prettier-eslint --stdin
# Specify file path for stdin (affects ESLint config detection)
echo "const foo = 'bar'" | prettier-eslint --stdin --stdin-filepath src/example.jsControl which files are processed using ignore file patterns.
# Apply .eslintignore patterns (default: true)
prettier-eslint --eslint-ignore "src/**/*.js"
# Disable .eslintignore patterns
prettier-eslint --no-eslint-ignore "src/**/*.js"
# Apply .prettierignore patterns (default: true)
prettier-eslint --prettier-ignore "src/**/*.js"
# Disable .prettierignore patterns
prettier-eslint --no-prettier-ignore "src/**/*.js"
# Include dotfiles in processing
prettier-eslint --include-dot-files "src/**/*"
# Add custom ignore patterns
prettier-eslint --ignore "**/*.min.js" --ignore "dist/**" "src/**/*.js"Configure paths to eslint and prettier binaries and configuration files.
# Specify eslint binary path
prettier-eslint --eslint-path ./node_modules/.bin/eslint "src/**/*.js"
# Specify eslint config file
prettier-eslint --eslint-config-path .eslintrc.custom.js "src/**/*.js"
# Specify prettier binary path
prettier-eslint --prettier-path ./node_modules/.bin/prettier "src/**/*.js"
# Specify prettier config file
prettier-eslint --config .prettierrc.custom.json "src/**/*.js"Control whether prettier or eslint runs first in the formatting process.
# Run prettier first, then eslint --fix (default)
prettier-eslint "src/**/*.js"
# Run eslint --fix first, then prettier
prettier-eslint --prettier-last "src/**/*.js"Configure logging levels for debugging and monitoring.
# Set log level
prettier-eslint --log-level debug "src/**/*.js"
prettier-eslint -l warn "src/**/*.js"
# Available log levels: silent, error, warn, info, debug, traceLog Levels:
silent: No outputerror: Only errorswarn: Errors and warnings (default)info: Informational messagesdebug: Debug informationtrace: Verbose debuggingConfigure Prettier-specific formatting options directly through CLI arguments.
# Tab/spacing configuration
prettier-eslint --use-tabs "src/**/*.js"
prettier-eslint --tab-width 4 "src/**/*.js"
prettier-eslint --print-width 120 "src/**/*.js"
# Quote configuration
prettier-eslint --single-quote "src/**/*.js"
prettier-eslint --no-single-quote "src/**/*.js"
# Semicolon configuration
prettier-eslint --semi "src/**/*.js"
prettier-eslint --no-semi "src/**/*.js"
# Trailing comma configuration
prettier-eslint --trailing-comma es5 "src/**/*.js"
prettier-eslint --trailing-comma all "src/**/*.js"
prettier-eslint --trailing-comma none "src/**/*.js"
# Bracket spacing
prettier-eslint --bracket-spacing "src/**/*.js"
prettier-eslint --no-bracket-spacing "src/**/*.js"
# JSX-specific options
prettier-eslint --jsx-bracket-same-line "src/**/*.jsx"
# Arrow function parentheses
prettier-eslint --arrow-parens avoid "src/**/*.js"
prettier-eslint --arrow-parens always "src/**/*.js"
# Parser selection
prettier-eslint --parser babel "src/**/*.js"
prettier-eslint --parser typescript "src/**/*.ts"
# Pragma support
prettier-eslint --require-pragma "src/**/*.js"
prettier-eslint --insert-pragma "src/**/*.js"
# Prose wrapping (for markdown)
prettier-eslint --prose-wrap always "docs/**/*.md"
prettier-eslint --prose-wrap never "docs/**/*.md"
prettier-eslint --prose-wrap preserve "docs/**/*.md"Prettier Option Values:
--trailing-comma: none, es5, all--arrow-parens: avoid, always--parser: babel, typescript, flow, json, css, markdown, etc.--prose-wrap: always, never, preserve--no- prefixPragma Options Detail:
--require-pragma: Only format files containing a special @format comment at the top. Useful for gradual adoption in large codebases.--insert-pragma: Automatically insert a @format pragma comment at the top of formatted files. Works well with --require-pragma.--prose-wrap: Controls how markdown text wrapping is handled (always = wrap at print width, never = no wrapping, preserve = keep existing wrapping)The CLI uses standard exit codes for automation and CI/CD integration:
# Exit code 0: Success - all files processed without errors
prettier-eslint "src/**/*.js"
echo $? # 0
# Exit code 1: Formatting differences found (with --list-different)
prettier-eslint --list-different "src/**/*.js" # when files differ from expected format
echo $? # 1
# Exit code 1: Formatting errors occurred
prettier-eslint "src/broken-syntax.js" # when formatting fails due to syntax errors
echo $? # 1
# Exit code 1: Configuration or runtime errors
prettier-eslint --eslint-config-path ./nonexistent.js "src/**/*.js"
echo $? # 1Exit Code Meanings:
0: Success - all operations completed without errors1: Failure - formatting errors, syntax errors, configuration issues, or differences found (in --list-different mode)The CLI supports environment variables for configuration:
# Set default log level (overrides default "warn")
LOG_LEVEL=debug prettier-eslint "src/**/*.js"
LOG_LEVEL=silent prettier-eslint "src/**/*.js"
# Available values: silent, error, warn, info, debug, trace
# Equivalent to using --log-level flagEnvironment Variable Options:
LOG_LEVEL: Sets the default logging level (same values as --log-level){
"scripts": {
"format": "prettier-eslint --write \"src/**/*.{js,jsx,ts,tsx}\"",
"format:check": "prettier-eslint --list-different \"src/**/*.{js,jsx,ts,tsx}\"",
"precommit": "prettier-eslint --write --list-different \"src/**/*.{js,jsx,ts,tsx}\""
}
}# .git/hooks/pre-commit
#!/bin/sh
prettier-eslint --list-different "src/**/*.js"
if [ $? -ne 0 ]; then
echo "Code formatting issues found. Run 'npm run format' to fix."
exit 1
fi# GitHub Actions example
- name: Check code formatting
run: |
npm install
npx prettier-eslint --list-different "src/**/*.{js,jsx,ts,tsx}"" Vim configuration - basic formatting with gq command
autocmd FileType javascript set formatprg=prettier-eslint\ --stdin
" Auto-format on save (optional)
autocmd BufWritePre *.js :normal gggqGThis configuration allows vim users to:
gq command for manual formatting with prettier-eslintprettier-eslint-cli respects standard configuration files:
.eslintrc.*, eslint.config.js, package.json eslintConfig.prettierrc.*, prettier.config.js, package.json prettier.eslintignore, .prettierignoreThe CLI provides comprehensive error handling and logging:
Common Error Scenarios:
prettier-eslint or fallback)Troubleshooting Steps:
--log-level debug for detailed diagnostic informationprettier-eslint-cli requires:
prettier-eslint (optional, falls back to internal version)The package includes an internal fallback version (@prettier/eslint) when prettier-eslint is not installed.