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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@o-town/devkit

v1.3.1

Published

Zero-dependency Node.js debug inspector and test runner

Readme

DevKit — Node.js Debug & Test Runner

A zero-dependency Node.js package with a rich debug inspector and a built-in test runner.


Quick Start

npm run debug     # inspect system, env, package, dependencies & file structure
npm run tester    # run all test suites in tests/

npm run debug

Prints a full runtime report:

| Section | What it shows | |----------------------|----------------------------------------------------| | System Snapshot | Platform, Node version, PID, CPU count, memory | | Package Info | name, version, main, scripts | | Dependencies | Whether each declared dep is installed or missing | | Environment Vars | Relevant process.env keys | | Project Structure | File tree (skips node_modules, dotfiles) | | Summary | Any warnings/errors found |

All output is also saved to logs/debug-YYYY-MM-DD.log.


npm run tester

  • Scans tests/*.test.js and runs every suite automatically.
  • Falls back to built-in example tests when no files are found.
  • Zero dependencies — no Jest, no Mocha needed.

Writing Tests

// tests/my-feature.test.js

describe('My Feature', () => {

  beforeEach(() => { /* setup */ });

  it('adds numbers', (assert) => {
    assert.equal(1 + 1, 2);
  });

  it('checks an object', (assert) => {
    assert.deepEqual({ a: 1 }, { a: 1 });
  });

  xit('this test is skipped');
});

Assert API

| Method | Description | |---------------------------------|---------------------------------------------| | assert.equal(a, b, msg?) | Strict equality (===) | | assert.notEqual(a, b, msg?) | Strict inequality | | assert.deepEqual(a, b, msg?) | Deep equality via JSON serialization | | assert.truthy(val, msg?) | Value is truthy | | assert.falsy(val, msg?) | Value is falsy | | assert.throws(fn, msg?) | Sync function throws | | assert.asyncThrows(fn, msg?) | Async function throws | | assert.typeOf(val, type, msg?)| typeof check | | assert.instanceOf(v, cls, msg?)| instanceof check | | assert.includes(arr, item, msg?)| Array includes item | | assert.match(str, regex, msg?)| Regex test |

Lifecycle Hooks

beforeAll(fn)   // runs once before the suite
afterAll(fn)    // runs once after the suite
beforeEach(fn)  // runs before every test
afterEach(fn)   // runs after every test

File Structure

devkit/
├── package.json
├── src/
│   ├── index.js       ← programmatic API (logger, assert, info)
│   ├── debug.js       ← npm run debug
│   └── tester.js      ← npm run tester
├── tests/
│   └── example.test.js
└── logs/              ← auto-created on first debug run

change package,json

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js",
    "debug": "node node_modules/@o-town/devkit/debug.js",
    "tester": "node node_modules/@o-town/devkit/tester.js"
  },

Programmatic Use

const { logger, assert, info } = require('./src/index');

logger.info('Server started');
logger.ok('DB connected');
logger.warn('Config missing, using defaults');
logger.error('Unhandled exception');
logger.debug('payload: ' + JSON.stringify(data));

assert.equal(user.role, 'admin');

console.log(info());