https://github.com/cutenode/mingine
A module to get the minimum usable engine(s)
https://github.com/cutenode/mingine
engines node nodejs package-json package-lock reliability supoort
Last synced: 5 months ago
JSON representation
A module to get the minimum usable engine(s)
- Host: GitHub
- URL: https://github.com/cutenode/mingine
- Owner: cutenode
- License: mit
- Created: 2020-01-30T19:03:23.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-01-05T01:02:07.000Z (over 4 years ago)
- Last Synced: 2025-04-28T14:07:25.311Z (5 months ago)
- Topics: engines, node, nodejs, package-json, package-lock, reliability, supoort
- Language: JavaScript
- Size: 44.9 KB
- Stars: 16
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mingine
A Node.js module to understand your dependencies `engines`.
## Usage
First, you'll need to install mingine:
```sh
npm i mingine
```Next, you'll want to require and use mingine. Requring mingine returns a promise that resolves an object.
```js
const mingine = require('mingine')async function getNodeMinimumEngine () {
const engines = await mingine() // mingine returns a promiseconsole.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)`
* `options` object (optional) - An object that acts as a courrier of options to [Arborist][]. Currently, only `path` is actively used.
* `path` string (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 the `engines` property of a given package.json. Examples: `node`, `npm`
- `versions` object - an object that will always be identified as `versions` that 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`
- `minimum` string - a string that includes the _minimum usable version_ of `${engineName}` given the context collected from the `engines` property of all package.json files within `node_modules`.An example of JSON output can be found at [./examples/everything-output.json][]
[./examples/everything-output.json]:./examples/everything-output.json
[Arborist]:https://www.npmjs.com/package/@npmcli/arborist