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

monotool

v3.0.0

Published

monorepo tool

Downloads

10

Readme

monotool

A tool to manage monorepos with npm (with or without npm workspaces in npm v7).

Local Packages

For the purpose of this documentation, a "local package" is a folder in the monorepo containing a package.json file. By default, those folders must be a sub-folder of "packages", but that can be changed.

Each package.json file can contain a name that doesn't exactly match the folder name. For example, the package.json file in "packages/a" might have a name of "@my-org/a".

When not using npm workspaces (added in npm v7), local packages reference each other with file:.. URLs in their package.json dependencies. For example, if "packages/a" depends on "packages/b", the package.json in "packages/a" would contain a dependency that looks like "@my-org/b": "file:../b".

When using npm workspaces in npm v7, local package dependecies can use version ranges or even "*" like "@my-org/b": "*".

Local packages can, of course, reference any package on npm or elsewhere as any normal Node.js project would.

If not using npm workspaces, add "packages" to your root package.json to indicate where to look for local packages. The default is ["packages/*"]. Then you would run monotool install which will run npm install in each package directory.

If using npm workspaces, use "workspaces" instead of "packages". Then you would run npm install from the root directory. Other commands like monotool list might still be useful and are safe to run without interfering with npm.

Commands

install

monotool install

Runs npm install for each local package.

It will install in dependency order so that any postinstall or prepare scripts can run before their dependents need them.

Do not use this command if you are using npm workspaces.

list

monotool list [target]

Lists local packages in dependency order. By default, the relative path to each directory is printed. That can be changed by using -i files or -i names to print the paths to the package.json files or the actual package names. To print absolute paths, use -a.

When no target is specified, all local packages are output. When a target is specified, only dependencies of that target (and itself) are output.