Globbing & Ignores
Accurate and fast scanning is essential for performance. Pickier uses fast-glob and applies a consistent path expansion strategy, then filters by extensions.
Path expansion
- If a provided argument contains glob magic (e.g.,
*,{},[],?), it is passed through as-is - If it looks like a file path with an extension, it is used as-is (lint only)
- Otherwise, it is treated as a directory and expanded to
dir/**/*
Note: The formatter expands directories to **/* unconditionally for non-glob inputs; the linter uses a slightly smarter check to leave explicit file paths untouched.
Extension filtering
After expansion, matched files are filtered by extensions:
- CLI default for
--extis.ts,.tsx,.js,.jsx - If
--extis omitted, Pickier uses the config’sformat.extensionsorlint.extensions - In config, extensions are specified without dots (e.g.,
'ts', not'.ts')
Examples:
bash
pickier format . --ext .ts,.tsx,.js
pickier lint "src/**/*.{ts,tsx,js}" --max-warnings 0Ignores
Ignored paths come from config.ignores. Defaults include common folders like node_modules, dist, build, vendor, and coverage.
Examples:
ts
export default {
ignores: ['**/node_modules/**', '**/dist/**', '**/coverage/**'],
}Currently, the --ignore-path CLI flag is accepted but not applied; prefer configuring ignores in your config file.
fast-glob options
Pickier calls fast-glob with these options:
dot: false— skip dotfiles by defaultignore: config.ignoresonlyFiles: trueunique: trueabsolute: true
Best practices
- Keep
ignoresbroad at the top-level to save I/O (e.g.,**/coverage/**) - Pass explicit globs in local workflows for the changed area to save time
- Remember to include
.json,.md,.yaml,.ymlif you want formatting coverage beyond TS/JS