You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

zeptomatch

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zeptomatch

An absurdly small glob matcher that packs a punch.

latest
Source
npmnpm
Version
2.1.0
Version published
Weekly downloads
2.7M
-11.78%
Maintainers
1
Weekly downloads
 
Created
Source

Zeptomatch

An absurdly small glob matcher that packs a punch.

Overview

The following syntax is supported:

SyntaxDescription
*Matches any character, except for the path separator, zero or more times.
**Matches any character zero or more times. If it doesn't span the entire length of a path segment it's interpreted as a * instead.
?Matches any character, except for the path separator, one time.
\Matches the character after it in the glob literally. This is the escape operator.
[abc]Matches any of the characters in the class one time.
[a-z]Matches any of the characters in the range in the class one time.
[^abc]Matches any character, except for the characters in the class, and the path separator, one time. Aliased as [!abc] also.
[^a-z]Matches any character, except for the characters in the range in the class, and the path separator, one time. Aliased as [!a-z] also.
{foo,bar}Matches any of the alternations, which are separated by a comma, inside the braces.
{01..99}Matches any of the numbers in the expanded range. Padding is supported and opt-in.
{a..zz}Matches any of the strings in the expanded range. Upper-cased ranges are supported and opt-in.
!globMatches anything except the provided glob. Negations can only be used at the start of the glob.
!!globMatches the provided glob. Negations can only be used at the start of the glob.

Additional features and details:

  • Zeptomatch works pretty similarly to picomatch, since 1000+ of its tests are being used by this library.
  • Zeptomatch is opinionated, there are barely any options, which helps with keeping it tiny and manageable.
  • Zeptomatch is automatically memoized, the only ways to use it are always the most optimized ones available.
  • Zeptomatch automatically normalizes path separators, since matching Windows-style paths would most likely be a mistake.
  • Zeptomatch supports compiling a glob to a standalone regular expression.
  • Zeptomatch supports compiling multiple globs to a standalone regular expression too.
  • Zeptomatch doesn't do anything special for file names starting with a dot.
  • Zeptomatch supports nesting braces indefinitely.
  • Zeptomatch supports matching globs partially too, with path segment-level awareness!

Limitations:

  • POSIX classes (e.g. [:alnum:]) are not supported. Implementing them is out of scope for a "zepto"-level library.
  • Extglobs (e.g. ?(foo)) are not supported. They are too complicated and quirky too support here.

Install

npm install zeptomatch

Usage

import zeptomatch from 'zeptomatch';

// Let's check if a glob matches a path, fully

zeptomatch ( '*.js', 'abcd' ); // => false
zeptomatch ( '*.js', 'a.js' ); // => true
zeptomatch ( '*.js', 'a.md' ); // => false
zeptomatch ( '*.js', 'a/b.js' ); // => false

// Let's check if a glob matches a path, partially
// Matching partially is very useful for performance when traversing the filesystem
// It's important to not match the glob partially anymore once you have the full path available though!

zeptomatch ( 'foo/bar/*.js', 'foo', { partial: true } ); // => true
zeptomatch ( 'foo/bar/*.js', 'foo/bar', { partial: true } ); // => true
zeptomatch ( 'foo/bar/*.js', 'foo/bar/_', { partial: true } ); // => false, as no additional path segment could ever make this match
zeptomatch ( 'foo/bar/*.js', 'foo/bar/file.js' ); // => true, remember to not match the full path partially

// Let's compile a glob to a regular expression that matches fully

const fullRe = zeptomatch.compile ( 'src/*.js' ); // => /^(?:src[\\/][^\\/]*\.js)[\\/]?$/s

// Let's compile a glob to a regular expression that matches partially

const partialRe = zeptomatch.compile ( '*.js', { partial: true } ); // => /^(?:src(?:$|[\\/](?:$|[^\\/]*\.js)))[\\/]?$/s

Utilities

The following additional utilities are available, as standalone packages:

License

MIT © Fabio Spampinato

Keywords

tiny

FAQs

Package last updated on 19 Oct 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts