Commands for analyzing file patterns, configuration resolution, and performance timing. These commands provide insights into dprint's operation and help with debugging and optimization.
Output the list of files that would be processed by formatting commands, useful for verifying pattern matching and debugging file discovery.
# Output files that would be formatted
dprint output-file-paths [OPTIONS] [FILES...]
# Uses same pattern matching as fmt/check commands
--includes <PATTERNS> # Include file patterns
--excludes <PATTERNS> # Exclude file patterns
--allow-node-modules # Include node_modules filesUsage Examples:
# List all files that would be formatted
dprint output-file-paths
# Check specific patterns
dprint output-file-paths --includes "src/**/*.ts"
# Verify exclude patterns
dprint output-file-paths --excludes "**/*.generated.ts"
# Complex pattern analysis
dprint output-file-paths \
--includes "src/**/*.{ts,js}" \
--includes "tests/**/*.{ts,js}" \
--excludes "**/*.min.js" \
--excludes "node_modules/**"
# Check if specific file would be included
dprint output-file-paths src/main.tsOutput Format:
src/main.ts
src/utils/helper.ts
src/components/Button.tsx
tests/main.test.tsOutput the complete resolved configuration as JSON, showing how dprint interprets configuration files, plugin settings, and environment variables.
# Output resolved configuration as JSON
dprint output-resolved-configUsage Examples:
# View complete resolved configuration
dprint output-resolved-config
# Pipe to jq for formatted output
dprint output-resolved-config | jq '.'
# Save configuration for analysis
dprint output-resolved-config > resolved-config.json
# Check specific configuration path
dprint --config ./custom.json output-resolved-configExample Output:
{
"configPath": "/project/dprint.json",
"plugins": [
{
"name": "typescript",
"version": "0.88.0",
"url": "https://plugins.dprint.dev/typescript-0.88.0.wasm",
"config": {
"indentWidth": 2,
"lineWidth": 120,
"useTabs": false,
"semiColons": "always",
"quoteStyle": "alwaysDouble"
}
}
],
"includes": ["**/*.{ts,tsx,js,jsx}"],
"excludes": ["node_modules/**", "dist/**"],
"incremental": true
}Output detailed timing information for formatting operations, useful for performance analysis and optimization.
# Output timing information for formatting operations
dprint output-format-times [OPTIONS] [FILES...]
# Options
--allow-no-files # Allow running with no matched files
--includes <PATTERNS> # Include file patterns
--excludes <PATTERNS> # Exclude file patternsUsage Examples:
# Analyze formatting performance for all files
dprint output-format-times
# Performance analysis for specific patterns
dprint output-format-times --includes "src/**/*.ts"
# Benchmark large codebase
dprint output-format-times --includes "**/*.{ts,js,json}"
# Compare performance with/without incremental
dprint output-format-times > timing-incremental.json
dprint output-format-times --incremental false > timing-full.jsonOutput Format:
{
"files": [
{
"filePath": "src/main.ts",
"duration": 45,
"formattingDuration": 38,
"pluginName": "typescript"
},
{
"filePath": "package.json",
"duration": 12,
"formattingDuration": 8,
"pluginName": "json"
}
],
"summary": {
"totalFiles": 2,
"totalDuration": 57,
"averageDuration": 28.5,
"pluginInitDuration": 120,
"fileDiscoveryDuration": 15
}
}Understanding the timing output helps optimize formatting performance:
{
"duration": 45, // Total time for file (ms)
"formattingDuration": 38, // Pure formatting time (ms)
"pluginName": "typescript", // Plugin used
"overhead": 7 // I/O and setup overhead (ms)
}Common performance issues identified through timing analysis:
# Plugin initialization overhead
{
"pluginInitDuration": 2000, // High initialization time
"solution": "Use editor service or LSP for persistent plugins"
}
# File discovery overhead
{
"fileDiscoveryDuration": 500, // Slow file pattern matching
"solution": "Optimize include/exclude patterns"
}
# Individual file performance
{
"filePath": "large-file.ts",
"duration": 5000, // Very slow formatting
"solution": "Check plugin configuration or file complexity"
}# Use incremental formatting
dprint output-format-times --incremental true
# Optimize file patterns
dprint output-format-times --includes "src/**/*.ts" --excludes "**/*.d.ts"
# Compare plugin performance
dprint output-format-times > typescript-timing.json
# Switch to different plugin, then:
dprint output-format-times > biome-timing.json# 1. Check resolved configuration
dprint output-resolved-config
# 2. Verify file discovery
dprint output-file-paths
# 3. Test formatting on subset
dprint fmt --diff src/main.ts
# 4. Analyze timing
dprint output-format-times src/main.ts# Debug include patterns
dprint output-file-paths --includes "**/*.ts"
# Debug exclude patterns
dprint output-file-paths --excludes "**/*.generated.ts"
# Check specific file inclusion
dprint output-file-paths path/to/file.ts
# Verify pattern precedence
dprint output-file-paths \
--includes "**/*.ts" \
--excludes "**/*.d.ts"# Baseline performance measurement
dprint output-format-times > baseline.json
# Test incremental performance
dprint output-format-times --incremental true > incremental.json
# Compare plugin performance
dprint --config typescript-config.json output-format-times > ts.json
dprint --config biome-config.json output-format-times > biome.json
# Analyze results
jq '.summary.averageDuration' baseline.json incremental.json# CI performance tracking
dprint output-format-times > performance-report.json
# Compare against baseline
performance_threshold=100
current_avg=$(jq '.summary.averageDuration' performance-report.json)
if (( $(echo "$current_avg > $performance_threshold" | bc -l) )); then
echo "Performance regression detected: ${current_avg}ms"
exit 1
fi# Validate configuration in CI
dprint output-resolved-config > /dev/null || {
echo "Configuration resolution failed"
exit 1
}
# Verify expected files are discovered
expected_files=50
actual_files=$(dprint output-file-paths | wc -l)
if [ "$actual_files" -lt "$expected_files" ]; then
echo "Too few files discovered: $actual_files < $expected_files"
exit 1
fi# Generate analysis report
{
echo "# dprint Analysis Report"
echo "## Configuration"
dprint output-resolved-config | jq '.'
echo "## File Discovery"
echo "Total files: $(dprint output-file-paths | wc -l)"
echo "## Performance"
dprint output-format-times | jq '.summary'
} > analysis-report.md# Debug file discovery
dprint output-file-paths
# Check patterns
dprint output-file-paths --includes "**/*.ts" --excludes "node_modules/**"
# Verify current directory
pwd
ls -la *.ts # Check if files exist# Check configuration resolution
dprint output-resolved-config
# Validate JSON syntax
cat dprint.json | jq '.'
# Test specific config path
dprint --config ./custom.json output-resolved-config# Identify slow files
dprint output-format-times | jq '.files | sort_by(.duration) | reverse | .[0:5]'
# Check plugin initialization
dprint output-format-times | jq '.summary.pluginInitDuration'
# Profile file discovery
dprint output-format-times | jq '.summary.fileDiscoveryDuration'