Glob patterns
Guide to using glob patterns in Ellipsis configuration.
Glob patterns let you include or exclude sets of paths with compact wildcard expressions, similar to regular expressions or .gitignore
patterns.
Glob-matching implementations can vary between libraries, so be sure to test your patterns in our environment. Contact us if you have any questions or run into issues.
Examples of Common Patterns
Some everyday use cases for globs:
Use‑case | Pattern |
---|---|
All files at any depth | ** |
All markdown files at any depth | **/*.md |
All files in src/ | src/** |
All TypeScript & TSX in src/ | src/**/*.{ts,tsx} |
Only test files (Jest style) | **/*.{test,spec}.{ts,tsx} |
Everything except node_modules | ** !**/node_modules/** |
Basic Patterns
Wildcard *
*
matches any string within a path segment, but not across directory boundaries.
It’s a common mistake to use *
when you meant to use the globstar **
- see below.
Globstar **
**
matches any string (including empty) across directory boundaries. Using **
is the most common way to match all files in a directory.
Brace expansion {a,b}
Expands into multiple literal alternatives before matching.
So, src/**/*.{ts,tsx}
expands into two patterns: src/**/*.ts
and src/**/*.tsx
Negation !pattern
Prefix a pattern with !
to exclude it.
Negation is usually used in conjunction with multiple patterns.Patterns are evaluated in the order they are listed. So, you typically want your first pattern to be the most inclusive, followed by a series of negations.
Make sure to include a negation pattern after the relevant include pattern; otherwise, because patterns are evaluated in order, the negation will have no effect.
For example, the list of patterns ["!src/utils/**", "**"]
will not exclude anything, and will instead match all files.
Extras
These are less commonly used, but useful to know about.
Ellipsis custom handling
To cover some edge cases we commonly see in production, we have some custom handling of glob patterns to reduce footguns.
Forgetting to append /**
It’s common for developers to reach for .gitignore
-style patterns, which don’t require using the globstar **
. So, we expand patterns that don’t end in /**
to include all files in the directory.
src
=> src/**
src/
=> src/**
Dot‑files
Although dotfiles are commonly excluded by default in many globbing tools, Ellipsis enables them by default.
Negation without matching patterns
It’s a common mistake to include a negation pattern without any matching patterns before it. So, if all patterns in a list are negated, Ellipsis will automatically insert a **
pattern to run first in the list to ensure some files are included.
Triple stars (***
)
Using ***
is usually a typo where the user meant to write **
. So, we rewrite them to **
.
***
=> **
src/***/foo
=> src/**/foo