{"id":21261,"library":"esbuild-plugin-pino","title":"esbuild-plugin-pino","description":"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.","status":"active","version":"2.3.3","language":"javascript","source_language":"en","source_url":"https://github.com/davipon/esbuild-plugin-pino","tags":["javascript","pino","esbuild","esbuild-plugin","pino-transport","bundling","typescript"],"install":[{"cmd":"npm install esbuild-plugin-pino","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-pino","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-pino","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency; the plugin must be used with esbuild >=0.25.0 <=0.25.8","package":"esbuild","optional":false},{"reason":"peer dependency; the plugin bundles pino transports and requires pino runtime","package":"pino","optional":false},{"reason":"peer dependency; required for pino-pretty transport support","package":"pino-pretty","optional":true},{"reason":"peer dependency; used internally for worker threads","package":"thread-stream","optional":true}],"imports":[{"note":"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.","wrong":"const esbuildPluginPino = require('esbuild-plugin-pino').default","symbol":"default","correct":"import esbuildPluginPino from 'esbuild-plugin-pino'"},{"note":"Named export available since v2.3.3. Using a different name like pinoPlugin still works but may cause confusion.","wrong":"import pinoPlugin from 'esbuild-plugin-pino'","symbol":"esbuildPluginPino (named)","correct":"import { esbuildPluginPino } from 'esbuild-plugin-pino'"},{"note":"PluginOptions is a TypeScript type; use type-only import to avoid runtime inclusion.","wrong":"import { PluginOptions } from 'esbuild-plugin-pino'","symbol":"type PluginOptions","correct":"import type { PluginOptions } from 'esbuild-plugin-pino'"},{"note":"CommonJS require works as plugin exports a single function. Avoid naming it 'pino' to prevent confusion with the pino logger.","wrong":"const pino = require('esbuild-plugin-pino')","symbol":"require (CommonJS)","correct":"const esbuildPluginPino = require('esbuild-plugin-pino')"}],"quickstart":{"code":"// esbuild build script with pino plugin\nimport { build } from 'esbuild';\nimport esbuildPluginPino from 'esbuild-plugin-pino';\n\nawait build({\n  entryPoints: ['src/index.ts'],\n  outdir: 'dist',\n  bundle: true,\n  plugins: [esbuildPluginPino({ transports: ['pino-pretty'] })],\n});\n\n// Then in your application:\nimport pino from 'pino';\nconst logger = pino({\n  transport: {\n    target: 'pino-pretty',\n    options: { colorize: true }\n  }\n});\nlogger.info('Hello from bundled app!');","lang":"typescript","description":"Shows basic usage: import plugin, pass it to esbuild build with transports option, and use pino logger with that transport at runtime."},"warnings":[{"fix":"Update to esbuild-plugin-pino >=2.3.0 or pin esbuild to a compatible version.","message":"esbuild peer dependency range is strict: esbuild >=0.25.0 <=0.25.8. Using esbuild outside this range may cause plugin failures.","severity":"breaking","affected_versions":"<2.3.0"},{"fix":"Ensure all generated files are copied to production. Use the same outdir structure.","message":"Extra 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.","severity":"gotcha","affected_versions":"*"},{"fix":"Update to Pino >=9.1.0 or ignore the extra file.","message":"pino-pipeline-worker.js is no longer required after Pino v9.1.0. It may still be generated but is unnecessary.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Add the packageExtensions block shown in README to .yarnrc.yml.","message":"Yarn PnP users must add package extensions in .yarnrc.yml for pino, pino-pretty, and thread-stream.","severity":"gotcha","affected_versions":"*"},{"fix":"Follow migration guide: update plugin options and ensure all extra files are re-generated.","message":"The plugin output changed between v1.x and v2.x; upgrade may require adjusting deployment scripts for generated files.","severity":"breaking","affected_versions":">=1.0.0 <2.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Copy the entire outdir (including all generated files) to production. Ensure the path matches esbuild's outdir.","cause":"The plugin-generated worker file is missing in the deployment directory.","error":"Error: Cannot find module 'pino-worker.js'"},{"fix":"Run npm install esbuild@0.25.0 (or compatible) and ensure esbuild-plugin-pino version matches.","cause":"Installed esbuild version is outside the plugin's peer dependency range.","error":"Error: The plugin \"esbuild-plugin-pino\" requires esbuild version >=0.25.0 <=0.25.8 but you have version 0.24.0"},{"fix":"Use dynamic import() or switch to ESM. Or update to esbuild-plugin-pino >=2.3.3 which supports both.","cause":"Using CommonJS require() on an ESM-only version of the plugin (pre-2.3.3).","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module esbuild-plugin-pino not supported"},{"fix":"Use import esbuildPluginPino from 'esbuild-plugin-pino' (default) or const { esbuildPluginPino } = require('esbuild-plugin-pino').","cause":"Default import used incorrectly; the plugin may be imported as named export in older versions.","error":"TypeError: esbuildPluginPino is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}