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 🙏

© 2025 – Pkg Stats / Ryan Hefner

calviche

v1.0.1

Published

Executes command for all local dependencies respecting the hierarchical dependency order.

Readme

Calviche

Executes command for all local dependencies respecting the hierarchical dependency order.

Install

npm i calviche

The problem

You have a monorepo like this:

api/
-- api-1/
---- package.json
libs/
-- lib-1/
---- package.json
-- lib-2/
---- package.json

Where package.json from api-1 declares dependency with lib-1 and lib-2 like this:

{
  "name": "api-1",
  "dependencies": {
    "lib-1": "file:../libs/lib-1",
    "lib-2": "file:../libs/lib-2",
    ...
  }
}

Similarly lib-1 declares dependency with lib-2 like this:

{
  "name": "lib-1",
  "dependencies": {
    "lib-2": "file:../libs/lib-2",
    ...
  }
}

Resulting in the following dependency graph:

Dependency graph

In this scenario you have the cumbersome task of manually install dependencies from the deepest local dependency up to the root, tracing the graph mentally. Imagine this task in a real enterprise monorepo where you have many more local dependencies. You could use other tools for this task like lerna or bolt (which are amazing) but you wouldn't have the flexibility to run command within specific stacks in the monorepo without adding config files in the repo-root.

Solution

Here is were Calviche appears. This library allows to run a command from the deepest local dependency up to the root declaring the command to execute in the root package.

Example:

Given the previous scenario you just would to declare a custom install script like this:

{
  "name": "api-1",
  "scripts": {
    "install": "calviche npm install"
  },
  "dependencies": {
    "lib-1": "file:../libs/lib-1",
    "lib-2": "file:../libs/lib-2",
    ...
  }
}

And that's it! Calviche will execute the given command in all the local dependencies respecting the dependency graph! You could even execute tests or any command you like in the stack by appending the command after calviche, just make sure to install globally the dependency so the binary file can be found.