or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

analysis.mdconfiguration.mdeditor-integration.mdformatting.mdindex.mdutilities.md
tile.json

configuration.mddocs/

Configuration Management

Tools for initializing, updating, and managing dprint configuration files and plugins. Configuration management is central to dprint's plugin architecture and formatting behavior.

Capabilities

Configuration Initialization

Creates a new dprint configuration file with sensible defaults and plugin recommendations.

# Initialize configuration in current directory
dprint config init

# Alternative short form
dprint init

Usage 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"]
# }

Plugin Management

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 --yes

Configuration Discovery

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

Configuration 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 discovery

Configuration File Format

Basic Structure

dprint 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"
  }
}

Plugin Configuration

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

File Pattern Configuration

{
  "includes": [
    "**/*.{ts,tsx,js,jsx}",
    "**/*.{json,jsonc}",
    "**/*.md"
  ],
  "excludes": [
    "node_modules/**",
    "dist/**",
    "build/**",
    "**/*.min.js",
    "**/*-lock.json"
  ]
}

Plugin System

Plugin Types

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

# Plugin resolution order:
# 1. Full URL (direct download)
# 2. Plugin registry lookup by name
# 3. GitHub release resolution
# 4. Local file path

Plugin 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 Hierarchy

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
    }
  }
}

Environment Integration

Environment Variables

# 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

Project Integration

# 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

Troubleshooting

Configuration Errors

# 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

Plugin Issues

# Clear plugin cache
dprint clear-cache

# Update plugins to latest versions
dprint config update --yes

# Check plugin resolution
dprint fmt --log-level debug

Performance Optimization

# Use incremental formatting
{
  "incremental": true
}

# Optimize file patterns
{
  "includes": ["src/**/*.ts"],  // Specific patterns
  "excludes": ["**/*.generated.ts"]
}

# Plugin-specific performance settings
{
  "typescript": {
    "preferences": {
      "includeCompletionsForModuleExports": false
    }
  }
}