Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including multimatch with all npm packages installed. Try it out:

var multimatch = require("multimatch")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

multimatch v4.0.0

Extends `minimatch.match()` with support for multiple patterns

multimatch Build Status

Extends minimatch.match() with support for multiple patterns


$ npm install multimatch


const multimatch = require('multimatch');

multimatch(['unicorn', 'cake', 'rainbows'], ['*', '!cake']);
//=> ['unicorn', 'rainbows']

See the tests for more usage examples and expected matches.


multimatch(paths, patterns, [options]

Returns an array of matching paths.


Type: string | string[]

Paths to match against.


Type: string | string[]

Globbing patterns to use. For example: ['*', '!cake']. See supported minimatch patterns.


Type: object

See the minimatch options.

How multiple patterns work

Positive patterns (e.g. foo or *) add to the results, while negative patterns (e.g. !foo) subtract from the results.

Therefore a lone negation (e.g. ['!foo']) will never match anything – use ['*', '!foo'] instead.

Globbing patterns

Just a quick overview.

  • * matches any number of characters, but not /
  • ? matches a single character, but not /
  • ** matches any number of characters, including /, as long as it's the only thing in a path part
  • {} allows for a comma-separated list of "or" expressions
  • ! at the beginning of a pattern will negate the match


  • globby - Match against the filesystem instead of a list
  • matcher - Simple wildcard matching


MIT © Sindre Sorhus


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free