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

toobig

v3.4.0

Published

Check file and directory sizes against a budget.

Downloads

41

Readme

toobig ⚖️

A simple utility to check file and directory sizes against a budget.

Screenshot of toobig in action

Table of contents

Install

To install:

npm install toobig --save-dev

Or if you prefer using Yarn:

yarn add toobig --dev

Usage

Configuration

By default, toobig will search up the directory tree for configuration in the following places:

  • a toobig property in package.json
  • a .toobigrc file in JSON or YAML format
  • a .toobigrc.json file
  • a .toobigrc.yaml, .toobigrc.yml, or .toobigrc.js file
  • a toobig.config.js file exporting a JS object

toobig continues to search up the directory tree, checking each of these places in each directory, until it finds some acceptable configuration (or hits the home directory).

Configuration looks like this:

{
  "budgets": {
    "dist/*.entry.js": "16KB",
    "dist/*.lazy.js": "128KB"
  }
}

If you want to specify which reporters to use, it would look something like this:

{
  "budgets": {
    "dist/*.entry.js": "16KB",
    "dist/*.lazy.js": "128KB"
  },
  "reporters": [
    "line",
    ["table", { "template": "markdown" }],
    "summary",
    ["json", { "output": "toobig-report.json" }],
    ["junit", { "output": "toobig-report.xml" }],
    ["tap", { "output": "toobig-report.txt" }]
  ]

budgets

budgets is a map where the keys are glob expressions, and the values are their corresponding budget. If any file or directory that matches a glob expression is bigger than its specified budget, toobig will exit with a non-zero status.

reporters

reporters is an array of reporters that will process results.

Built-in reporters are:

  • line
  • table
  • summary
  • json
  • junit
  • tap

CLI

scan [options]

scan is the default command. It scans the current working directory to check for entries over budget, and reports them.

To get help:

toobig --help

To run:

toobig

To specify the location of the config file, instead of relying on the search logic described above:

toobig --config path/to/.toobigrc

To specify the reporters to use:

toobig --reporters json > toobig-report.json

To compare against the results of a previous run:

toobig --baselines toobig-previous.json --reporters table summary

load [options]

load allows you to load results from a previous run, and report them.

To get help:

toobig load --help

To run:

toobig load --results toobig-report.json

To specify the reporters to use:

toobig load --results toobig-report.json --reporters table summary

To compare against the results of a previous run:

toobig load --results toobig-report.json --baselines toobig-previous.json --reporters table summary

Programmatic

scanAndReport

import { scanAndReport } from "toobig";

const { results, anyOverBudget } = await scanAndReport({
  budgets: {
    "dist/*.entry.js": "16KB",
    "dist/*.lazy.js": "128KB",
  },
  reporters: [["json", { output: "toobig-report.json" }]],
});

loadAndReport

import { loadAndReport } from "toobig";

const { results, anyOverBudget } = await loadAndReport({
  results: "toobig-report.json",
  reporters: [
    "default",
    ["junit", { output: "toobig-report.xml" }],
    ["tap", { output: "toobig-report.txt" }],
  ],
});

Build

To build:

npm run build

To continuously build on changes:

npm run watch:build

Test

To run linting and unit tests:

npm test

To run just unit tests:

npm run test:unit

To continuously run unit tests on changes:

npm run watch:unit

Meta

Contributors

License

This is free software, and may be redistributed under the terms specified in the LICENSE file.