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

effect-build-node-sea

v0.9.0

Published

Direct native Node SEA assembly as a typed Effect service.

Readme

effect-build-node-sea

An Effect service for native Node single executable application assembly. Version 0.9.0 uses Effect 4.0.0.

NodeSea runs node --check and node --build-sea against already-bundled JavaScript. Bundling and signing belong to the application. The native assembly command was added in Node 25.5.0; the binding's one-time probe warns outside 26.7.x and allows native failures to surface.

Usage

This typechecked example takes plain input and output paths. The application's entry point supplies NodeSea.layer() and its platform services.

import { Effect } from "effect";
import { NodeSea } from "effect-build-node-sea";

/** The entry point supplies NodeSea.layer and its chosen platform services. */
export const assemble = Effect.fn("Example.assemble")(function*(main: string, outfile: string) {
  const sea = yield* NodeSea;
  return yield* sea.assemble({ main, outfile, atomic: true });
});

The service's assemble method accepts:

| Input | Meaning | | -------------------------------- | ------------------------------------------------------------------------------------------- | | main | Path to already-bundled JavaScript | | outfile | Requested output path; Windows appends .exe when needed | | mainFormat? | "commonjs" by default, or "module" | | assets? | Native asset names mapped to file paths | | cwd? | Base for relative input, asset, and output paths | | atomic? | Default false; true stages beside the destination and checks native magic before one rename | | disableExperimentalSEAWarning? | Native configuration option; default false |

Success returns the absolute final path. Configuration files live in a private temporary directory and are cleaned after assembly. Snapshot and code-cache generation are disabled.

Construction

NodeSea.make(options?), NodeSea.layer(options?), and NodeSea.layerConfig(config) accept executable? and baseExecutable?. The builder is resolved once from PATH unless explicitly supplied. The base defaults to that builder; an explicit base is passed to Node's native configuration. Choose a base compatible with the builder's native SEA requirements.

The service captures its process spawner, filesystem, and path services at construction. Version probing is warn-only. An older Node without --build-sea reports a native ToolError when assembly runs. No fallback or injection library is selected.

macOS applications compose their required signing step, for example through the Codesign service, after assembly. The Node SEA integration job exercises native Node 26.7 on Linux; it does not establish credentialed signing behavior.

Errors

Native command failures use ToolError. NodeSeaError carries step: "prepare" | "cleanup" and a cause for configuration filesystem failures. With atomic: true, publication can also fail with AtomicError or ExecutableError; a native-magic read failure remains PlatformError. See errors and publication for commit and cleanup semantics.

Getting started · Tools and bindings · Compatibility