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

yesbuild-core

v0.2.0

Published

Readme

npm version

Yesbuild

中文版

A scable and extensible build system for the Web ecosystem.

Features

  • Automatically dependencies tracing
  • Fast and incremental build WITHOUT resident process
  • Parallel
  • Simple syntaxes to config
  • Easy to compose
  • Easy to know what happended
  • Full typed plugin API
  • Easy to integrate with other bundlers

Why

Currently, most of the bundlers hide the details internally. When the project become large, the dependencies become complex. There is no way to understand how to optimize the procedures.

Besides, it's hard for a bundler to build incrementally. Mosts of the tools load everything into the memory to implement hot reload, that's a disaster for a very large project. It will cost Gb level memory and there is no way to debug.

Yesbuild is a friendly tool for you to make your own building procedures. It divides the building procedure into multiple tasks. Tasks can be composed, and can be excuted standalone. And they are persistent.

It makes your building procedure more reasonable, more easy to compose things.

Install

Globally

npm install -g yesbuild-core

Scoped

yarn install yesbuild-core

or

pnpm i yesbuild-core

Usage

Quick Start

Make a new file named yesbuild.config.js in your project directory.

Define a task:

import yesbuild, { useEsBuild } from 'yesbuild-core';

yesbuild.defineTask('preview', () => useEsBuild({
    entryPoints: ['./src/index.tsx'],
    bundle: true,
    format: 'esm',
    platform: 'browser',
    sourcemap: true,
    splitting: true,
}));

Type yesbuild in shell to run:

yesbuild

And the procedure begins...

When you type yesbuild again, the magic happens:

Nothing changes because the Yesbuild knows that your source files don't changed. If you modified your source files, Yesbuild will execute the action next time you build.

Simple example to start a dev server

This example demonstrates how to compose tasks.

You can use the result of a task as the input to another task.

You can run this example in packages/yesbuild-visualizer/

import yesbuild, { uesEsBuild, useCopy, useTask, useTaskDir, useDevServer } from 'yesbuild-core';

// define a task for the preview assets
yesbuild.defineTask('preview', () => uesEsBuild({
    entryPoints: ['./src/index.tsx'],
    bundle: true,
    format: 'esm',
    platform: 'browser',
    sourcemap: true,
    splitting: true,
}));

// copy static assets to the task directory,
yesbuild.defineTask('assets', function*() {
  const taskDir = useTaskDir();
  yield useCopy('./assets/*', taskDir, {
    relative: './assets/'
  });
});

// use the result of the preview task to start a dev server
yesbuild.defineTask('serve', function* () {
  // get the result of other tasks
  const assets = yield useTask('assets');
  const preview = yield useTask('preview');
  return useDevServer({
    port: 3000,
    mapResults: [assets, result],  // dev server will map the requests to other tasks
  });
});

Type yesbuild -t serve to start the server.

Remember, all the dependencies are saved in the files in your build directory. So if they don't changed, nothing will be built next time.

Check build/yesbuild.preview.yml and you will know what yesbuild has done for you.

Internal actions

| Name | Description | |------|------------| | useEsBuild | esbuild | | useCopy | Copy files | | useParallel | Run tasks in parallel | | useDevServer | Run a dev server and map files from other tasks |

External actions

| Name | Package name | Location | |------|--------------|----------| | useTypescript | yesbuild-typescript | packages/yesbuild-typescript | | useSolidJS | yesbuild-solidjs | packages/yesbuild-solidjs |

More and more actions will be added...

Write your own action

Check contributing guide.

Visualization

Running the project in packages/yesbuild-visualizer/ which is built yesbuild. Drag your files in the build folder into it and you can view the dependencies in the browser.