๐Ÿ’ฉ Poops

Poops is a straightforward, no-bullshit bundler for the web โ€” and a bit more than that. On the surface it takes input and output paths and poops out bundled files. Underneath it is three tools in one:

  • a bundler & transpiler for JavaScript/TypeScript and SCSS/Sass,
  • a PostCSS pipeline (so Tailwind and friends work),
  • and a Jekyll-inspired static site generator with templating, collections, images, search and navigation.

If you have ever fought Webpack config, watched Rollup plugins rot, or wondered why a "simple" setup needs fifteen dependencies โ€” Poops is the antidote. One JSON config, sane defaults, minimal learning curve.

Tip

In a hurry? Jump to the Quick Start and have something building in a minute.

Why another bundler?

Gulp is abandoned. Parcel hates config files. Rollup and Webpack are heavy for simple tasks. Poops exists to do one boring thing well: give it an in and an out, get bundled files back. It leans on the fastest tools available โ€” esbuild for JS/TS and Dart Sass for styles โ€” and stays out of your way.

What it is

Poops is a Jekyll-inspired static site builder. Like Jekyll, you write templates and content, drop in some front matter, and get a static site. Unlike Jekyll, it is also the bundler for your JS and CSS, it runs on Node, and it uses modern transpilers under the hood.

You configure everything in a single poops.json (or ๐Ÿ’ฉ.json) file. Each top-level key is a pipeline you can opt into or ignore:

Key What it does
scripts Bundle & transpile JS/TS/JSX/TSX with esbuild
styles Compile SCSS/Sass with Dart Sass
postcss Run a PostCSS pipeline (Tailwind, Autoprefixer, โ€ฆ)
markup Generate HTML from Nunjucks/Liquid/Markdown templates
reactor Pre-render React components to HTML at build time
images Optimize & generate responsive image variants
copy Copy static files into the output
serve / livereload / watch Local dev server with live reload

Note

Everything is optional except that you need at least one of scripts, styles, postcss or markup. No input, no poop. ๐Ÿ’ฉ

What it is not

Poops is not a plugin ecosystem. There is no plugin API to learn, no poops.config.js with callbacks. If a feature isn't built in, you compose it from the pipelines above (for example, PostCSS for Tailwind) or you contribute it. That constraint is the point โ€” the config stays small and readable.

Who it's for

Poops is a niche tool, not a general-purpose framework. It earns its keep in three spots:

  • The anti-config build. A marketing page or a couple of static templates with some SCSS doesn't need a webpack.config.js or a dozen Vite plugins. One JSON block, in and out, done.
  • Design-token-driven micro-sites. Poops reads the W3C DTCG format natively and turns Figma-exported token JSON into SCSS variables โ€” no separate Style Dictionary or Gulp pipeline. Useful for design-system docs and standalone component libraries.
  • Static sites with just enough React. Write the site in Nunjucks or Liquid, then drop in one or two interactive React components (a calculator, a filter UI) via the reactor pipeline's zero-config SSR and hydration. SEO-friendly HTML, without the footprint of a full React framework.

Where it has zero value

  • Large SPAs. No React Fast Refresh, no granular code splitting, no plugin ecosystem. Reach for Next.js or Vite instead.
  • Non-React component frameworks. Vue, Svelte, Solid โ€” not supported, not planned.
  • Mission-critical enterprise infrastructure. Poops is maintained by one person as a side project. That's fine for a brochure site; think twice before betting production revenue on it.

Note

If you're not sure whether Poops fits, the litmus test is size: small static site or design system docs, yes; full application, no.

Row by row against the alternatives โ€” Vite, webpack, Rollup, Parcel, Jekyll, Eleventy, Astro, Hugo and Next, including the rows Poops loses: Comparisons.

Install

Globally:

npm i -g poops

or per-project:

npm i -D poops

Tip

For the fastest possible start, clone the template repo ๐Ÿ’ฉ๐ŸŒช๏ธ Shitstorm and start editing.

Ready? Head to the Quick Start โ€” and when the site builds, publish it on GitHub Pages.