Registry / web-framework / esbuild-plugin-pino

esbuild-plugin-pino

JSON →
library2.3.3jsnpmunverified

esbuild-plugin-pino is an esbuild plugin that enables bundling Pino (v7+) with applications by generating extra files required by Pino's worker-thread-based transport architecture. Current stable version is 2.3.3, released regularly with dependency updates. Unlike naive bundling attempts that break Pino's runtime, this plugin automatically produces thread-stream.js, pino-worker.js, pino-pipeline-worker.js, pino-file.js, and any custom transport bundles alongside your main output. It supports ESM and CJS, ships TypeScript types, and requires esbuild 0.25.0–0.25.8, pino >=7, plus optional pino-pretty and thread-stream as peer dependencies.

npm install esbuild-plugin-pino
INSTALL
IMPORT
SIG · ESBUILD-PLUGIN-PIN
E
esbuild-plugin-pino
web-frameworkjavascriptv2.3.3
Install
—
Import
—
Disk
—
Pass rate
0/ 6
Env Coverage0 / 6
glibc
18–22
musl
18–22
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18–223 runs
build_error
glibc
node 18–223 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

default
✓ import esbuildPluginPino from 'esbuild-plugin-pino'
✗ const esbuildPluginPino = require('esbuild-plugin-pino').default
Plugin provides both ESM default export and CJS module.exports. The require pattern shown is also correct but avoids potential .default issue in mixed environments.
esbuildPluginPino (named)
✓ import { esbuildPluginPino } from 'esbuild-plugin-pino'
✗ import pinoPlugin from 'esbuild-plugin-pino'
Named export available since v2.3.3. Using a different name like pinoPlugin still works but may cause confusion.
type PluginOptions
✓ import type { PluginOptions } from 'esbuild-plugin-pino'
✗ import { PluginOptions } from 'esbuild-plugin-pino'
PluginOptions is a TypeScript type; use type-only import to avoid runtime inclusion.
require (CommonJS)
✓ const esbuildPluginPino = require('esbuild-plugin-pino')
✗ const pino = require('esbuild-plugin-pino')
CommonJS require works as plugin exports a single function. Avoid naming it 'pino' to prevent confusion with the pino logger.

Shows basic usage: import plugin, pass it to esbuild build with transports option, and use pino logger with that transport at runtime.

// esbuild build script with pino plugin import { build } from 'esbuild'; import esbuildPluginPino from 'esbuild-plugin-pino'; await build({ entryPoints: ['src/index.ts'], outdir: 'dist', bundle: true, plugins: [esbuildPluginPino({ transports: ['pino-pretty'] })], }); // Then in your application: import pino from 'pino'; const logger = pino({ transport: { target: 'pino-pretty', options: { colorize: true } } }); logger.info('Hello from bundled app!');
Debug
Known issues
breakingesbuild peer dependency range is strict: esbuild >=0.25.0 <=0.25.8. Using esbuild outside this range may cause plugin failures.
fix
Update to esbuild-plugin-pino >=2.3.0 or pin esbuild to a compatible version.
affects: <2.3.0
gotchaExtra files (thread-stream.js, pino-worker.js, pino-pipeline-worker.js, pino-file.js) are generated in outdir. These must be included in deployment; missing them causes runtime errors.
fix
Ensure all generated files are copied to production. Use the same outdir structure.
affects: *
deprecatedpino-pipeline-worker.js is no longer required after Pino v9.1.0. It may still be generated but is unnecessary.
fix
Update to Pino >=9.1.0 or ignore the extra file.
affects: >=2.0.0
gotchaYarn PnP users must add package extensions in .yarnrc.yml for pino, pino-pretty, and thread-stream.
fix
Add the packageExtensions block shown in README to .yarnrc.yml.
affects: *
breakingThe plugin output changed between v1.x and v2.x; upgrade may require adjusting deployment scripts for generated files.
fix
Follow migration guide: update plugin options and ensure all extra files are re-generated.
affects: >=1.0.0 <2.0.0
Errors
Common errors & fixes
Error: Cannot find module 'pino-worker.js'
The plugin-generated worker file is missing in the deployment directory.
fix
Copy the entire outdir (including all generated files) to production. Ensure the path matches esbuild's outdir.
Error: The plugin "esbuild-plugin-pino" requires esbuild version >=0.25.0 <=0.25.8 but you have version 0.24.0
Installed esbuild version is outside the plugin's peer dependency range.
fix
Run npm install esbuild@0.25.0 (or compatible) and ensure esbuild-plugin-pino version matches.
Error [ERR_REQUIRE_ESM]: require() of ES Module esbuild-plugin-pino not supported
Using CommonJS require() on an ESM-only version of the plugin (pre-2.3.3).
fix
Use dynamic import() or switch to ESM. Or update to esbuild-plugin-pino >=2.3.3 which supports both.
TypeError: esbuildPluginPino is not a function
Default import used incorrectly; the plugin may be imported as named export in older versions.
fix
Use import esbuildPluginPino from 'esbuild-plugin-pino' (default) or const { esbuildPluginPino } = require('esbuild-plugin-pino').
Upgrade
Version history
2.3.3latest on npm
Audit
Dependencies
esbuildrequiredpeer dependency; the plugin must be used with esbuild >=0.25.0 <=0.25.8
pinorequiredpeer dependency; the plugin bundles pino transports and requires pino runtime
pino-prettyoptionalpeer dependency; required for pino-pretty transport support
thread-streamoptionalpeer dependency; used internally for worker threads
Agent activity
26 hits · last 30 days
node
22
Amazon
1
OpenAI (training)
1
Resources
esbuild-plugin-pino — npm install esbuild-plugin-pino · libregistry