1.0.0 • Published 7 years ago

engines-enforcer v1.0.0

Weekly downloads
125
License
MIT
Repository
github
Last release
7 years ago

engines-enforcer

NPM version Build Status

Enforce node engines specified in package.json

Because this:

Invalid node version. This package requires ">=7.0". You are using "v4.7.0"

Is 💯 times nicer than this:

const a = 1;
^^^^^
SyntaxError: Use of const in strict mode.
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    ...more cryptic random internals of Node.js

Install

yarn add engines-enforcer

Usage

// if your current node version does not match "engines" in "package.json"
require('engines-enforcer')('./package.json');
//=> 'Invalid node version. This package requires ">=7.0". You are using "v4.7.0"'
// if your current node version matches, it continues silently
require('engines-enforcer')('./package.json');
// the rest of your code...

Why?

Nobody likes seeing errors like:

const a = 1;
^^^^^
SyntaxError: Use of const in strict mode.
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:945:3

Especially when you're running a module for the first time. Use engines-enforcer at the very top of your entry file in order to throw pleasant and informative errors instead!

Caution - This is intended to be used within cli's and not modules which will be composed as sub-dependencies. It would be redundant to enforce node versions in more than one place, so consider this a good practice for cli's only.

API

enginesEnforcer(packagePath)

Arguments

NameDescriptionTypeDefault
packagePathPath to package.jsonstringNone

Returns

Type: Nothing on success, exits for you on failure (with status code 1)

License

MIT © Dawson Botsford