satisfied

1.1.2 • Public • Published

satisfied

Keep your package.json version requirements satisfied

Install

$ npm install satisfied --save-dev

Usage

The best way to use satisfied is in your package.json scripts:

{
  "scripts": {
    "satisfied": "satisfied --fix"
  }
}
$ npm run satisfied

Fix dependencies before starting your app:

satisfied --fix && node index.js 

Fail tests early if node_modules do not match package.json exactly.

satisfied --exact && mocha

--fix

Fixes:

  1. node_modules that do not satisfy package.json requirements
  2. node_modules that do not satisfy peers
  3. package.json versions that do not satisfy peers

Installs the latest exact published version that satisfies the current package.json range and every peer's range. If this silver-bullet-version does not exist satisfied throws. There is simply no version in existence that satisfies all the required ranges.

How?

  1. Gathers ranges from package.json and peers
  2. Gets all available versions from NPM
  3. Filters only versions that satisfy all ranges
  4. Reduces the greatest version
  5. Installs that exact version
  6. Updates package.json and/or yarn.lock

Review and commit the changes 🍻

CLI

Usage: satisfied [options]

Options:
  --skip-invalid, -I  Skips checking invalid ranges (e.g. github urls) [boolean]
  --exact, -e         Check and fix using exact versions               [boolean]
  --fix, -f           Install modules that satisfy package.json
                                                        [choices: "npm", "yarn"]
  --ignore, -i        RegExp matching modules names to ignore           [string]
  --no-deps, -D       Exclude dependencies                             [boolean]
  --no-devs, -V       Exclude devDependencies                          [boolean]
  --no-peers, -P      Exclude peerDependencies                         [boolean]
  --debug, -d         Output more info                                 [boolean]
  -h, --help          Show help                                        [boolean]
  -v, --version       Show version number                              [boolean]

Examples:
  satisfied --fix                     Fix issues using npm
  satisfied --fix yarn                Fix issues using yarn
  satisfied --ignore "babel-plugin-"  Ignore babel-plugins
  satisfied --no-peers                Exclude peerDependencies

Why?

Having a package.json or yarn.lock means nothing if it isn't satisfied by the modules that are actually installed.

  • Neither npm nor yarn have a --fix command
  • Neither npm nor yarn respects peer dependency versions
  • CI services cache your modules, passing your tests with the wrong deps installed
  • You build and publish packages on outdated deps
  • You switch branches and have no idea that the updated package.json isn't satisfied with your node_modules

Package Sidebar

Install

npm i satisfied

Weekly Downloads

1,621

Version

1.1.2

License

MIT

Unpacked Size

180 kB

Total Files

23

Last publish

Collaborators

  • levithomason