Skip to main content

@open-sauced/check-engines

Description

The npm package @open-sauced/check-engines is designed to help contributors install dependencies conforming to the engines property in package.json.

Dependencies

This package uses the following modules:

Installation

npm install --save-dev @open-sauced/check-engines

Add the verification scripts to your scripts section in the package.json file:

{
"scripts": {
"preinstall": "npx @open-sauced/check-engines"
}
}

The reason why we provide npx in the scripts section is for the people using this as a development enhancement, interactive configurations or trimmed dependency trees, where using npx is preferred over installing all the dependencies at once.

Usage

Use your favourite package manager to install dependencies in your project or, if you set it as global verification system:

{
"scripts": {
"check-engines": "npx @open-sauced/check-engines"
"preinstall": "npm run check-engines",
"prestart": "npm run check-engines"
}
}

Advanced usage

If you have an API or any other non-library type of application, you can decouple this package from any install scripts and just use it as a verification:

{
"scripts": {
"check-engines": "npx @open-sauced/check-engines"
"prestart": "npm run check-engines"
}
}

A more traditional approach not using pre or post scripts, this example enables the check only for local machine development:

{
"scripts": {
"check-engines": "npx @open-sauced/check-engines"
"start": "...",
"dev": "npm run check-engines && npm start -- --watch"
}
}

FAQ

Usage on older node and npm versions

Older node and npm versions won't be able to run this package, depending on versions the scripts section could be ignored completely.

If you have that use case, this package is only worth enabling for progressive contributors frequently missing the legacy support of the respective module and forcefully upgrading dependencies - them running newer versions will force the error message and explicitly disable.

Why not use check-engines or engine-strict

As described in the npm@6 engine-strict docs:

Prior to npm 3.0.0, this feature was used to treat this package as if the user had set engine-strict. It is no longer used.

In npm@6 and later this was re-introduced as a config flag.

This package is designed with multiple legacy use cases in mind.

Library usage

If you are using this module in a library package, be advised that any *install script will run in the parent module when installed.

For example, given a module @demo-org/demo-package with a preinstall: "npx @open-sauced/check-engines" script, running npm install @demo-org/demo-package will require your locally installed node and npm versions to match the engines section of your package.json - if that is not set, nothing should happen and this package is a stray dependency in either @demo-org/demo-package or the module you are running this command in.

Contributing

We're always happy to onboard people into open source!

Check out the repository at @open-sauced/check-engines ❀️