git-grep.md
January 18, 2022 ยท View on GitHub
Git Grep
The official documentation for git grep gives the full set of options that can be passed to the simple-git git.grep method as options (note that -h to hide the file name is disallowed).
The simplest version is to search with a single search token:
import simpleGit from 'simple-git';
console.log(await simpleGit().grep('search-term'));
To search with multiple terms, use the grepQueryBuilder helper to construct the remaining arguments:
import simpleGit, { grepQueryBuilder } from 'simple-git';
// logs all files that contain `aaa` AND either `bbb` or `ccc`
console.log(
await simpleGit().grep(grepQueryBuilder('aaa').and('bbb', 'ccc'))
);
The builder interface is purely there to simplify the many -e flags needed to instruct git to treat an argument as a search term - the code above translates to:
console.log(Array.from(grepQueryBuilder('aaa').and('bbb', 'ccc')))
// [ '-e', 'aaa', '--and', '(', '-e', 'bbb', '-e', 'ccc', ')' ]
To build your own query instead of using the grepQueryBuilder, use the array form of options:
import simpleGit from 'simple-git';
console.log(await simpleGit().grep('search-term', ['-e', 'another search term']));
git.grep will include previews around the matched term in the resulting data, to disable this use options such as -l to only show the file name or -c to show the number of instances of a match in the file rather than the text that was matched.