mingine v1.0.2
mingine
A Node.js module to understand your dependencies engines.
Usage
First, you'll need to install mingine:
npm i migineNext, you'll want to require and use migine. Requring mingine returns a promise that resolves an object.
const mingine = require('mingine')
async function getNodeMinimumEngine () {
const engines = await mingine() // mingine returns a promise
console.log(engines.node ? engines.node.minimum : undefined) // will log the minimum usable version of node.js if there were any `engines` that included `node`, otherwise it'll return undefined
}
getNodeMinimumEngine()mingine(options)
optionsobject (optional) - An object that acts as a courrier of options to Arborist. Currently, onlypathis actively used.pathstring (optional) - where to search for node_modules. defaults to the current working directory.
Returns promise - a promise that resolves an object, which represents the strucutre of engines. See Returned Object Structure for more context on the shape of this object.
Calling mingine() by itself will return a promise that resolves an object. It searches the current working directory's node_modules to do so. Calling mingine(options) where options is an object and has the property path, the value of path will be used as the directory to search for node_modules.
Returned Object Structure
The structure of mingine's API is consistent, but the properties will not be. Mingine collects the engine property from every package inside of node_modules and then dynamically builds an object that includes every property within engines it encountered. It makes no assurances that any given property will exist since there's no gaurantee that a property may exist within node_modules.
The general structure will be:
${engineName}object - an object where the key is the name encountered inside of theenginesproperty of a given package.json. Examples:node,npmversionsobject - an object that will always be identified asversionsthat contains arrays that represent each${version}of${engineName}${version}array - an array where the key is either a valid semver version OR any other string - even if it's not a valid semver version - since people do weird things with engines. In the future this may be tweaked/audited. Examples:1.4.2,10.0.0,8.2.0${package}string - strings that represent the package names of packages that included${version}as the value for${engineName}in their package.json. Examples:webpack,react,qs,request
minimumstring - a string that includes the minimum usable version of${engineName}given the context collected from theenginesproperty of all package.json files withinnode_modules.
An example of JSON output can be found at ./examples/everything-output.json
./examples/everything-output.json:./examples/everything-output.json