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

vitest-profiler

v0.1.8

Published

A Vite plugin to profile Vitest test runs.

Readme

vitest-profiler

A Vite plugin to profile Vitest test runs.

Motivation

Vitest has fantastic documentation on Profiling Test Performance. When it comes to profiling said performance in practice, it involves a series of configuration and Node.js process modifications that felt too tedious for me to repeat every time. Besides, you likely want those profiling options to be conditional anyway, to apply only when you actually want to profile your test run.

I've created this plugin to implement Vitest recommendations of test profiling while simultaneously giving you a nice experience while doing so. I also intend to keep this plugin in-sync with the Vitest team recommendations in the future so for you it's a single point of entry for accessible test profiling. Enjoy!

Getting started

1. Install

First, add this package as a dependency to your project:

npm i vitest-profiler --save-dev

2. Add plugin

Next, add the vitestProfiler plugin from the vitest-profiler/plugin package to the plugins array of your Vite/Vitest configuration:

// vite.config.js
import { vitestProfiler } from 'vitest-profiler/plugin'

export default defineConfig({
  plugins: [vitestProfiler()],
})

The plugin automatically configures your threads/forks with the correct execArgv to provision Node.js process profiling.

3. Run tests

Finally, run your test command adding vitest-profiler before it:

vitest-profiler npm test

The vitest-profiler CLI will automatically force your tests to be in the run mode (not watch).

Alternatively, you can create a custom NPM script to use as a shorthand:

{
  "scripts": {
    "test": "vitest",
    "test:profile": "vitest-profiler npm test"
  }
}

4. Observe output

After running your tests with the profiler, you will see a message listing all the generated profiles:

Test profiling complete! Generated the following profiles:

  main-thread:
    - CPU:      test-profiles/2025-04-08-10-30-12-main-thread.cpuprofile

  tests:
    - CPU:      test-profiles/2025-04-08--10-30-12-tests.cpuprofile
    - Heap:     test-profiles/2025-04-08--10-30-12-tests.heapprofile

Navigate to the respective files to observe and debug your test performance. Here's a quick guide on each file:

  • CPU profiles (*.cpuprofile) record your CPU usage during the test run. Look here to see what takes the most time in your tests;
  • Heap profiles (*.heapprofile) record memory usage during the test run. Look here for potential memory leaks/heaps and other memory management issues.