npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

satisfied

v1.1.2

Published

Keep your package.json version requirements satisfied

Downloads

6,574

Readme

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 :beers:

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