file-content-matcher

Search files recursively using content match.

Usage no npm install needed!

<script type="module">
  import fileContentMatcher from 'https://cdn.skypack.dev/file-content-matcher';
</script>

README

file-content-matcher

Search files recursively using content match.

NPM version Downloads

Install

npm i file-content-matcher

Quick Start

import FileContentMatcher from 'file-content-matcher'

const matcher = new FileContentMatcher()
matcher.match(
  {
    path: 'path to search',
    filter: {
      namePatterns: ['**/*.js'],
      contentRegExp: /test/,
    },
  }
).then(files => {
  // ...
})

API

matcher.match(criteria)

Returns a Promise, resolved with an array of filepaths that matched the criteria.

  • path: Path to search. Example: ./src/
  • filter: Options for filtering files.
    • namePatterns: Glob patterns for looking for files. Example: ['**/*.js']. Default: [].
    • contentRegExp: Regular expression to match file content, ie: /test/i. Default: null.
    • readOptions: These options will be used in the Node.js fs.ReadFile function. Default: { encoding:'utf8', flag: 'r' }
  • recursiveDepth: Specify the max depth when searching recursively from the given path. Default: 0.
  • readFileConcurrency: The concurrency behavior for reading files. Useful when we search from a large folder which may cause EMFILE: too many open files errors. Default: 1000
  • micromatchOptions: These options will be used in micromatch.match function. For more details, refer to micromatch#options.

Command Line Interface

Usage: file-content-matcher [options]

Options:
  -v, --version                                 output the version number
  -p, --path <path>                             set the path to be searched (default:
                                                process.cwd())
  -n, --namePatterns <**/*.js,...>              set glob patterns for looking for files (default:
                                                [])
  -c, --contentRegExp </test/i>                 set regular expression to match file content (default: null)
  -d, --depth <number>                          set the depth while searching recursively from the given
                                                path (default: 0)
  -concurrency, --readFileConcurrency <number>  set the concurrency behavior for reading files
                                                (default: 1000)

Below is an example:

$ file-content-matcher -p ./test/testFiles -n "**/*.js,\!*.less" -c "Modal.*@\/components"

Test

npm test