{"id":25311,"library":"esbuild-plugin-assets-manifest","title":"esbuild-plugin-assets-manifest","description":"esbuild plugin that generates a JSON manifest file mapping entry points to their output assets (JS, CSS, images, etc.), similar to assets-webpack-plugin for Webpack. Version 1.0.8 is the latest stable release. It requires esbuild as a peer dependency, builds output based on esbuild's metafile, and supports custom filenames, output paths, metadata injection, and custom processing via processOutput. Key differentiators: lightweight, no extra runtime dependencies, focused solely on manifest generation, and fully typed with TypeScript definitions.","status":"active","version":"1.0.8","language":"javascript","source_language":"en","source_url":"https://github.com/indooorsman/esbuild-plugin-assets-manifest","tags":["javascript","assets","manifest","esbuild","webpack","plugin","typescript"],"install":[{"cmd":"npm install esbuild-plugin-assets-manifest","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-assets-manifest","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-assets-manifest","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency required; plugin hooks into esbuild's plugin system.","package":"esbuild","optional":false}],"imports":[{"note":"Default export is a function. Named export none, so named destructured require fails.","wrong":"const { assetsManifest } = require('esbuild-plugin-assets-manifest')","symbol":"default","correct":"import assetsManifest from 'esbuild-plugin-assets-manifest'"},{"note":"CommonJS require works fine.","symbol":"default","correct":"const assetsManifest = require('esbuild-plugin-assets-manifest')"},{"note":"Both ESM and CJS supported.","symbol":"default","correct":"import assetsManifest from 'esbuild-plugin-assets-manifest'"}],"quickstart":{"code":"const esbuild = require('esbuild');\nconst assetsManifest = require('esbuild-plugin-assets-manifest');\n\nawait esbuild.build({\n  entryPoints: { app: './src/index.js' },\n  outdir: 'dist',\n  bundle: true,\n  metafile: true,\n  plugins: [\n    assetsManifest({\n      filename: 'manifest.json',\n      path: './dist',\n      metadata: { version: '1.0.0', builtAt: new Date().toISOString() },\n      processOutput: (assets) => JSON.stringify(assets, null, 2),\n    })\n  ]\n});","lang":"typescript","description":"Builds an entry point and generates a manifest JSON file with custom metadata and indentation."},"warnings":[{"fix":"Use entryPoints: { app: './src/app.js' } instead of entryPoints: ['./src/app.js'].","message":"Entry points must be an object (not array) for the manifest to include named entries.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Add metafile: true to your esbuild build options.","message":"metafile must be set to true in esbuild options for the plugin to work.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Create the directory manually or use a plugin like esbuild-plugin-copy to ensure it exists.","message":"The plugin does not validate that the manifest path exists; ensure the output directory exists before build.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Set publicPath: '/static/' (trailing slash) instead of '/static'.","message":"When using publicPath, ensure it ends with '/' to avoid missing slashes in asset URLs.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"If code splitting is used, additional processing may be needed; no built-in support.","message":"The manifest JSON may not include assets from code splitting or dynamic imports; only entry point outputs.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Call the function directly without 'new': assetsManifest({...})","cause":"Attempting to call the plugin function as if it were a class (e.g., new assetsManifest())","error":"Error: The plugin 'assets-manifest' must be called before build starts"},{"fix":"Use default import: import assetsManifest from 'esbuild-plugin-assets-manifest'","cause":"Incorrect import syntax in ESM (e.g., using named import instead of default import)","error":"TypeError: assetsManifest is not a function"},{"fix":"Change entryPoints to an object: { app: './src/app.js' }","cause":"Passed entryPoints as an array instead of an object","error":"Error: Build failed with 1 error: error: Invalid 'entryPoints': expected object"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}