Combines Prettier formatting with ESLint Standard linting into a unified command-line tool for JavaScript code quality.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Command-line interface providing comprehensive options for formatting, linting, and processing files. The CLI supports various processing modes including staged files, changed files, and stdin processing.
The prettier-standard command processes files according to specified options and patterns.
# Basic syntax
prettier-standard [<glob>]
# Examples
prettier-standard # Process all files in current repository
prettier-standard '**/*.js' # Process all JavaScript files
prettier-standard 'src/**/*.{js,ts}' # Process JS and TS files in src directory
prettier-standard --help # Show help information--format # Format files without linting (default behavior without --lint)
--lint # Additionally lint code after formatting using ESLint Standard rules
--check # Check formatting without modifying files, exit 1 if changes neededUsage Examples:
# Just format files
prettier-standard --format '**/*.js'
# Format and lint
prettier-standard --lint '**/*.js'
# Check if files need formatting (CI/CD usage)
prettier-standard --check '**/*.js'
if [ $? -eq 0 ]; then
echo "All files are properly formatted"
else
echo "Some files need formatting"
fi--staged # Run only on Git staged files (useful for pre-commit hooks)
--changed # Run only on files changed since HEAD
--since <rev> # Run only on files changed since given revision/branch
--lines # Run only on changed lines within files (experimental)Usage Examples:
# Process staged files (pre-commit hook)
prettier-standard --lint --staged
# Process files changed since HEAD
prettier-standard --changed --lint
# Process files changed since master branch
prettier-standard --since master --lint
# Process files changed since specific commit
prettier-standard --since abc123 --lint
# Process only changed lines (experimental)
prettier-standard --lines --changed--stdin # Force reading input from stdin
--stdin-filepath <path> # Specify filename for stdin (affects config resolution)
--parser <parser> # Force parser for stdin input (default: babel)Usage Examples:
# Format code from stdin
echo 'function hello(){return"world";}' | prettier-standard --stdin
# Format with explicit parser
echo '.foo { color: "red"; }' | prettier-standard --parser css --stdin
# Format stdin with config resolution based on fake filename
echo 'const x:number=5' | prettier-standard --stdin --stdin-filepath fake.ts
# Check stdin formatting
echo 'function hello () { return "world" }' | prettier-standard --stdin --checkCommon patterns for integrating with npm scripts:
{
"scripts": {
"format": "prettier-standard --format",
"format:check": "prettier-standard --check",
"lint": "prettier-standard --lint",
"precommit": "prettier-standard --lint --staged"
}
}Using with lint-staged for pre-commit hooks:
{
"scripts": {
"precommit": "lint-staged"
},
"lint-staged": {
"*.{js,ts,jsx,tsx}": ["prettier-standard --lint"],
"*.{json,css,md}": ["prettier-standard --format"]
}
}Complete pre-commit setup with Husky:
{
"scripts": {
"prepare": "husky install"
},
"lint-staged": {
"*": ["prettier-standard --lint"]
}
}Create .husky/pre-commit:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-stagedThe CLI uses standard exit codes for different outcomes:
# Exit code 0: Success
prettier-standard --check '**/*.js' # All files properly formatted
prettier-standard --lint '**/*.js' # No formatting changes and no lint errors
# Exit code 1: Formatting or linting issues
prettier-standard --check '**/*.js' # Some files need formatting
prettier-standard --lint '**/*.js' # Lint errors found
# Exit code 2: Execution errors
prettier-standard --invalid-option # Invalid command line options
prettier-standard 'invalid-glob[' # Invalid glob patternCI/CD Usage:
# Fail build if formatting is needed
prettier-standard --check '**/*.js' || exit 1
# Fail build if linting errors exist
prettier-standard --lint '**/*.js' || exit 1
# Combined check
prettier-standard --check --lint '**/*.js' && echo "Code quality checks passed"The CLI respects .prettierrc files for formatting options:
{
"semi": true,
"singleQuote": false,
"tabWidth": 4
}Supported formats:
.prettierrc (JSON).prettierrc.json.prettierrc.jsprettier.config.jspackage.json (prettier field)When using --lint, ESLint configuration is read from:
{
"rules": {
"eqeqeq": "off",
"no-console": "warn"
},
"env": {
"node": true,
"browser": true
}
}Supported formats:
.eslintrc.json.eslintrc.js.eslintrc (JSON)package.json (eslintConfig field).prettierignore - Files to exclude from formatting:
dist/
build/
**/*.min.js
coverage/
node_modules/.eslintignore - Files to format but exclude from linting:
dist/
build/
**/*.min.js
coverage/Using with ALE plugin:
Plug 'w0rp/ale'
let g:ale_fixers = {'javascript': ['prettier_standard']}
let g:ale_linters = {'javascript': ['']}
let g:ale_fix_on_save = 1npm install -g prettier-standardwhich prettier-standard{
"prettier_cli_path": "/usr/local/bin/prettier-standard"
}JsPrettier: Format CodeCreate .vscode/settings.json:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"prettier.prettierPath": "./node_modules/prettier-standard"
}# Efficient: Specific patterns
prettier-standard 'src/**/*.{js,ts}'
# Less efficient: Overly broad patterns
prettier-standard '**/*'
# Most efficient: Process only changed files
prettier-standard --changed --lint# For large repos, use changed files
prettier-standard --since master --lint
# For staged files in pre-commit
prettier-standard --staged --lint
# Process specific directories
prettier-standard 'apps/frontend/src/**/*.js' --lint# Invalid patterns
Error: Unable to expand glob pattern: Invalid glob pattern
# Git repository required
Error: No git repository detected...
# Syntax errors in files
SyntaxError: Unexpected token
# Module not found (internal error)
Error: Module not found: eslint-config-standardWhile there are no explicit debug flags, you can use verbose output:
# Check which files would be processed
prettier-standard --check '**/*.js' 2>&1 | grep -E '\.(js|ts|jsx|tsx)$'
# Test with a single file first
prettier-standard --check 'path/to/single/file.js'
# Use explicit patterns instead of defaults
prettier-standard 'src/**/*.js' 'test/**/*.js' --lintIssue: Files in node_modules being processed
# Solution: Use explicit patterns or check .prettierignore
prettier-standard 'src/**/*.js' 'lib/**/*.js'Issue: TypeScript files not being processed
# Solution: Include TypeScript patterns
prettier-standard '**/*.{js,ts,jsx,tsx}' --lintIssue: Pre-commit hook failing
# Solution: Ensure staged files are committed after formatting
git add .
prettier-standard --staged --lintInstall with Tessl CLI
npx tessl i tessl/npm-prettier-standard