Tools for initializing, updating, and managing dprint configuration files and plugins. Configuration management is central to dprint's plugin architecture and formatting behavior.
Creates a new dprint configuration file with sensible defaults and plugin recommendations.
# Initialize configuration in current directory
dprint config init
# Alternative short form
dprint initUsage Examples:
# Create dprint.json in current directory
dprint config init
# Configuration file created with basic structure:
# {
# "$schema": "https://dprint.dev/schemas/v0.json",
# "typescript": {},
# "json": {},
# "markdown": {},
# "includes": ["**/*.{ts,tsx,js,jsx,json,md}"],
# "excludes": ["node_modules", "**/*-lock.json"]
# }Add and update plugins in the configuration file with automatic version resolution.
# Add plugin by name or URL
dprint config add [PLUGIN_NAME_OR_URL]
# Update all plugins to latest versions
dprint config update [--yes]Usage Examples:
# Add plugin by name (automatic resolution)
dprint config add typescript
dprint config add json
dprint config add markdown
# Add plugin by URL
dprint config add https://plugins.dprint.dev/typescript-0.88.0.wasm
# Add plugin by GitHub release
dprint config add https://github.com/dprint/dprint-plugin-typescript/releases/download/0.88.0/plugin.wasm
# Update all plugins (interactive)
dprint config update
# Update all plugins (non-interactive)
dprint config update --yesControl how dprint finds and uses configuration files in directory hierarchies.
# Configuration discovery modes
--config <PATH> # Use specific configuration file
# Environment: DPRINT_CONFIG_DISCOVERY=<MODE>
# Discovery modes:
# - default: Search ancestors and descendants
# - ignore-descendants: Search ancestors only
# - false: No automatic discoveryConfiguration Discovery Behavior:
# Explicit configuration file
dprint fmt --config ./custom-dprint.json
# Environment-based discovery control
export DPRINT_CONFIG_DISCOVERY=ignore-descendants
dprint fmt # Only searches parent directories
export DPRINT_CONFIG_DISCOVERY=false
dprint fmt # No automatic config discoverydprint uses JSON or JSONC format for configuration files:
{
"$schema": "https://dprint.dev/schemas/v0.json",
"plugins": [
"plugin-url-or-name"
],
"includes": ["**/*.{ts,js,json}"],
"excludes": ["node_modules", "dist"],
"pluginName": {
"configOption": "value"
}
}Each plugin can be configured with specific options:
{
"typescript": {
"indentWidth": 2,
"lineWidth": 120,
"useTabs": false,
"semiColons": "always",
"quoteStyle": "alwaysDouble",
"trailingCommas": "onlyMultiLine"
},
"json": {
"indentWidth": 2,
"useTabs": false
},
"markdown": {
"lineWidth": 80,
"proseWrap": "always"
}
}{
"includes": [
"**/*.{ts,tsx,js,jsx}",
"**/*.{json,jsonc}",
"**/*.md"
],
"excludes": [
"node_modules/**",
"dist/**",
"build/**",
"**/*.min.js",
"**/*-lock.json"
]
}dprint supports two types of plugins:
# WebAssembly plugins (recommended)
# - Faster startup and execution
# - Sandboxed execution environment
# - Cross-platform compatibility
# Process plugins
# - Support for any language/runtime
# - More resource intensive
# - Full system access# Plugin resolution order:
# 1. Full URL (direct download)
# 2. Plugin registry lookup by name
# 3. GitHub release resolution
# 4. Local file pathPlugin URL Examples:
{
"plugins": [
// Direct WASM URL
"https://plugins.dprint.dev/typescript-0.88.0.wasm",
// Plugin registry name
"typescript",
// GitHub release
"https://github.com/dprint/dprint-plugin-typescript/releases/download/0.88.0/plugin.wasm",
// Local file path
"./plugins/custom-plugin.wasm"
]
}Plugin configuration follows a hierarchy:
{
// Global configuration (applies to all plugins)
"indentWidth": 2,
"lineWidth": 100,
// Plugin-specific configuration (overrides global)
"typescript": {
"lineWidth": 120, // Overrides global lineWidth
"semiColons": "always"
},
// File pattern overrides (most specific)
"overrides": {
"*.test.ts": {
"lineWidth": 80 // Override for test files
}
}
}# Configuration discovery control
DPRINT_CONFIG_DISCOVERY=default|ignore-descendants|false
# Plugin cache directory
DPRINT_CACHE_DIR=/path/to/cache
# Custom configuration file path
DPRINT_CONFIG=/path/to/config.json# Package.json scripts integration
{
"scripts": {
"format": "dprint fmt",
"format:check": "dprint check",
"format:diff": "dprint fmt --diff"
}
}
# Pre-commit hooks
# .pre-commit-config.yaml
- repo: local
hooks:
- id: dprint
name: dprint formatter
entry: dprint check --staged
language: system
pass_filenames: false# Debug configuration resolution
dprint output-resolved-config
# Check which files would be processed
dprint output-file-paths
# Verbose logging for configuration issues
dprint fmt --log-level debug# Clear plugin cache
dprint clear-cache
# Update plugins to latest versions
dprint config update --yes
# Check plugin resolution
dprint fmt --log-level debug# Use incremental formatting
{
"incremental": true
}
# Optimize file patterns
{
"includes": ["src/**/*.ts"], // Specific patterns
"excludes": ["**/*.generated.ts"]
}
# Plugin-specific performance settings
{
"typescript": {
"preferences": {
"includeCompletionsForModuleExports": false
}
}
}