# module-finder

> Finds and filters locally and/or globally installed modules using MongoDB like queries.

Latest version **4.0.1** (published 2015-09-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install module-finder
pnpm add module-finder
yarn add module-finder
bun add module-finder
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.0.1 |
| Published | 2015-09-17 |
| First published | 2015-08-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Joakim Carlstein |
| Maintainers | joakimbeng |
| Keywords | module, find, search, mongodb, package finder, global, local, package, installed, find modules, locate package |

## Links

- npm: https://www.npmjs.com/package/module-finder
- Repository: https://github.com/joakimbeng/module-finder
- Issues: https://github.com/joakimbeng/module-finder/issues
- npm.io page: https://npm.io/package/module-finder

## Dependencies (8)

- [pify](https://npm.io/package/pify.md) ^2.2.0
- [sift](https://npm.io/package/sift.md) ^2.0.3
- [semver](https://npm.io/package/semver.md) ~4.2.0
- [npm-root](https://npm.io/package/npm-root.md) ^1.1.0
- [read-pkg](https://npm.io/package/read-pkg.md) ^1.1.0
- [readdirp](https://npm.io/package/readdirp.md) ^2.0.0
- [object-assign](https://npm.io/package/object-assign.md) ^4.0.1
- [promise-reduce](https://npm.io/package/promise-reduce.md) ^2.0.0

## Alternatives

- [angular-pipes](https://npm.io/package/angular-pipes.md) — 5.6K weekly downloads
- [@ng-web-apis/midi](https://npm.io/package/@ng-web-apis/midi.md) — 2.6K weekly downloads
- [happn-3](https://npm.io/package/happn-3.md) — 1.6K weekly downloads
- [@opensip-cli/lang-go](https://npm.io/package/@opensip-cli/lang-go.md) — 1.2K weekly downloads
- [mongoose-typescript](https://npm.io/package/mongoose-typescript.md) — 85 weekly downloads

## Recent versions

- 4.0.1 (latest) — 2015-09-17
- 4.0.0 — 2015-09-17
- 3.0.0 — 2015-09-17
- 2.0.0 — 2015-09-16
- 1.0.0 — 2015-08-06

## README

# module-finder

[![Build status][travis-image]][travis-url] [![NPM version][npm-image]][npm-url] [![js-xo-style][codestyle-image]][codestyle-url]

> Finds and filters locally and/or globally installed modules using MongoDB like queries.

## Installation

Install `module-finder` using [npm](https://www.npmjs.com/):

```bash
npm install --save module-finder
```

## Usage

### Module usage

```javascript
var moduleFinder = require('module-finder');

// Example:
// find all locally installed modules with
// version numbers below 1.0.0, which has
// "test" as one of their keywords and
// that has XO as a `devDependency`:
moduleFinder({
  local: true,
  filter: {
    $version: '<1.0.0',
    keywords: {$in: ['test']},
    devDependencies: {xo: {$exists: true}}
  }
})
.then(function (modules) {
    console.log(modules);
    /*
      [
        {
          pkg: {
            name: 'a-package',
            version: '1.0.0',
            ...
          },
          path: '/Users/joakimbeng/project/node_modules/a-package'
        },
        ...
      ]
    */
});
```

## API

### `moduleFinder(options)`

| Name | Type | Description |
|------|------|-------------|
| options | `Object` | Options, [see below](#options) |

Returns: `Promise`, which resolves to all found modules according to given `options`.

#### Options

| Key | Type | Default | Description
|------|------|-------------|---------|
| local | `Boolean` | `false` | Specifies if module-finder will search for local modules |
| global | `Boolean` | `false` | Specifies if module-finder will search for global modules |
| recursive | `Boolean` | `false` | If set all nested `node_modules` folders will be searched as well |
| cwd | `String` | `NULL` | Set current working directory, affects what counts as local modules |
| filter | `Object` | `{}` | A MongoDB like query object to filter modules by, [see below](#optionsfilter) |

##### options.filter

The passed filter object is passed to [Sift](https://www.npmjs.com/package/sift) which filters the found modules by their `package.json` contents accordingly.

A special Sift operator exists: `$version` (see the code example above) which takes a string to use as the range argument to [`semver.satisfies()`](https://www.npmjs.com/package/semver).

## License

MIT © Joakim Carlstein

[npm-url]: https://npmjs.org/package/module-finder
[npm-image]: https://badge.fury.io/js/module-finder.svg
[travis-url]: https://travis-ci.org/joakimbeng/module-finder
[travis-image]: https://travis-ci.org/joakimbeng/module-finder.svg?branch=master
[codestyle-url]: https://github.com/sindresorhus/xo
[codestyle-image]: https://img.shields.io/badge/code%20style-xo-brightgreen.svg?style=flat

---
_Source: https://npm.io/package/module-finder · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
