find-plugins
A simple tool to find installed npm packages that meet certain criteria. Great for finding installed plugins or complementary packages to yours.
Usage
Simple
// Looks up the package.json in process.cwd, and returns any dependencies// listed that have your package's `name` in their keywords.plugins = ;
Custom Keyword
// Same as above, but rather than using your package.json name as the keyword// to search for, it will look for dependencies with "plugin" in their keyword// list.plugins = ;
Custom Filter
// This time, the supplied filter function will be called for each dependency,// and only those that return true will be returned in the final array.//// The filter function is supplied the package.json of the dependency to check.// In this case, this will find all dependencies whose name starts with// "my-plugin-"plugins = ;
Ignore package.json dependency list
// The scanAllDirs option allows you to skip loading your app's package.json// dependency list. Instead, it will scan all directories in the node_modules// folder, regardless of whether they are listed as dependencies or not.plugins = ;
Specify node_modules directory and your package.json
// Got an unusual setup? Just pass in the path of the directory containing your// dependencies, and the path to your app's package.json file. `pkg` is// optional if you are using `scanAllDirs` and `keyword` or `filter`.plugins = ;
Sort the plugins based on "before" and "after" config in their package.json's
// Each plugin can optionally include a "plugin-config" (or whatever you pass in under `configName`)// with a "before" and/or "after" property. These can be the name of another plugin (or an array of// other plugin names) that this plugin should come before/after. The returned array will be sorted// according to these rules via a directed acyclic graphplugins = ;
Options
/** * The node_modules directory to scan for plugins * * @type */ dir?: string = process /** * The path to the package.json that lists dependencies to check for plugins * * @type */ pkg?: string = './package.json' /** * An array of additional paths to check as plugins * * @type */ include?: string = /** * If supplied, a package will be considered a plugin if `keyword` is present in it's package.json * "keywords" array * * @type */ keyword?: string = pkgname /** * If sort: true is supplied, this determines what property of the plugin's package.json to check * for the sort configuration (it should be an object with "before" and "after" properties which * are arrays of other plugins names) * * @type */ sort?: boolean = false /** * The property on a plugin's package.json that contains sort config (an object with "before" * and/or "after" properties, which are the names of the plugin, or arrays of names) * * @type */ configName?: string = pkgname /** * A custom filter function that will receive the package summary and should return a boolean * indicating whether or not that package is a plugin. * * @type */ filter?: boolean /** * If true, the package.json list of dependencies will be ignored, and all packages found in * dir will be checked. * * @type */ scanAllDirs?: boolean /** * By default, findPlugins checks only the packages listed under "dependencies" in the * package.json. Setting this option to true will ignore those packages listed under * "dependencies". * * @type */ excludeDependencies?: boolean /** * Also check packages listed under devDependencies * * @type */ includeDev?: boolean /** * Also check packages listed under peerDependencies * * @type */ includePeer?: boolean /** * Also check packages listed under bundleDependencies * * @type */ includeBundle?: boolean /** * Also check packages listed under optionalDependencies * * @type */ includeOptional?: boolean
Returns
> ; dir: './node_modules/foobar' pkg: name: 'foobar' version: '0.0.1' ... ...