or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

index.md
tile.json

tessl/npm-prettier-eslint-cli

CLI tool for formatting JavaScript files using both Prettier and ESLint

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/prettier-eslint-cli@8.0.x

To install, run

npx @tessl/cli install tessl/npm-prettier-eslint-cli@8.0.0

index.mddocs/

prettier-eslint-cli

prettier-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.

Package Information

  • Package Name: prettier-eslint-cli
  • Package Type: npm
  • Language: JavaScript (Node.js)
  • Installation: npm install --save-dev prettier-eslint-cli

Core Imports

This 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"

Basic Usage

# 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\""
  }
}

Architecture

prettier-eslint-cli operates as a file processing pipeline:

  1. File Discovery: Uses glob patterns to find target files
  2. Ignore File Processing: Applies .eslintignore and .prettierignore rules
  3. Format Engine: Delegates to prettier-eslint for actual formatting
  4. Output Processing: Handles writing files, stdout output, or diff reporting
  5. Error Handling: Provides comprehensive error reporting and debugging information

The tool can process files from glob patterns or stdin, with extensive configuration options for both Prettier and ESLint behavior.

Capabilities

File Pattern Processing

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:

  • Multiple glob patterns are supported
  • Automatically excludes **/node_modules/** unless explicitly included
  • Supports standard glob syntax (*, **, ?, [], {})

Output Mode Control

Control 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"

Stdin Processing

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.js

Ignore File Configuration

Control 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"

Tool Configuration

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"

Execution Order Control

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"

Logging Configuration

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, trace

Log Levels:

  • silent: No output
  • error: Only errors
  • warn: Errors and warnings (default)
  • info: Informational messages
  • debug: Debug information
  • trace: Verbose debugging

Prettier Formatting Options

Configure 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
  • Boolean options can be negated with --no- prefix

Pragma 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)

Exit Codes

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 $? # 1

Exit Code Meanings:

  • 0: Success - all operations completed without errors
  • 1: Failure - formatting errors, syntax errors, configuration issues, or differences found (in --list-different mode)

Environment Variables

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 flag

Environment Variable Options:

  • LOG_LEVEL: Sets the default logging level (same values as --log-level)

Integration Examples

npm Scripts

{
  "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

# .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

CI/CD Pipeline

# GitHub Actions example
- name: Check code formatting
  run: |
    npm install
    npx prettier-eslint --list-different "src/**/*.{js,jsx,ts,tsx}"

Editor Integration

Vim Configuration

" Vim configuration - basic formatting with gq command
autocmd FileType javascript set formatprg=prettier-eslint\ --stdin

" Auto-format on save (optional)
autocmd BufWritePre *.js :normal gggqG

This configuration allows vim users to:

  • Use the gq command for manual formatting with prettier-eslint
  • Optionally auto-format JavaScript files on save

Configuration Files Support

prettier-eslint-cli respects standard configuration files:

  • ESLint: .eslintrc.*, eslint.config.js, package.json eslintConfig
  • Prettier: .prettierrc.*, prettier.config.js, package.json prettier
  • Ignore Files: .eslintignore, .prettierignore

Error Handling

The CLI provides comprehensive error handling and logging:

  • Individual File Errors: Logged with full stack traces but don't stop processing other files
  • Uncaught Exceptions: Provide debugging steps and issue reporting guidance
  • Configuration Errors: Clear messages about missing or invalid config files
  • Syntax Errors: Detailed error information with file locations
  • Exit Codes: Returns appropriate exit codes for automation (0 = success, 1 = errors/differences)

Common Error Scenarios:

  • Invalid JavaScript syntax in source files
  • Incompatible ESLint and Prettier rule configurations
  • Missing required dependencies (prettier-eslint or fallback)
  • File permission issues preventing read/write operations
  • Invalid glob patterns or file paths

Troubleshooting Steps:

  1. Verify file syntax is valid JavaScript/TypeScript
  2. Check ESLint and Prettier configurations are compatible
  3. Ensure all required dependencies are installed
  4. Verify file permissions allow reading/writing
  5. Use --log-level debug for detailed diagnostic information

Dependencies

prettier-eslint-cli requires:

  • Node.js: >=16.10.0
  • Peer Dependency: prettier-eslint (optional, falls back to internal version)

The package includes an internal fallback version (@prettier/eslint) when prettier-eslint is not installed.