{"id":25361,"library":"esbuild-plugin-json-merge","title":"esbuild-plugin-json-merge","description":"esbuild plugin to merge multiple JSON sources (glob patterns or inline objects) into a single output file during the build process. Version 0.1.0 is stable with no recent updates; it uses deep merging via Object.assign by default and supports custom merge functions. Differentiators: seamless integration with esbuild's pipeline, supports globs and inline objects, optional custom merge logic. Ships TypeScript types with MIT license. Ideal for bundling manifest files or configuration JSONs.","status":"active","version":"0.1.0","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/karolis-sh/esbuild-plugin-json-merge","tags":["javascript","esbuild","plugin","static","folder","typescript"],"install":[{"cmd":"npm install esbuild-plugin-json-merge","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-json-merge","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-json-merge","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; plugin integrates with esbuild","package":"esbuild","optional":false}],"imports":[{"note":"ESM uses default export; CJS require works if using CommonJS. TypeScript supports both.","wrong":"const jsonMerge = require('esbuild-plugin-json-merge')","symbol":"jsonMerge","correct":"import jsonMerge from 'esbuild-plugin-json-merge'"},{"note":"In CJS (require), default is on .default to avoid CommonJS interop issues.","wrong":"const jsonMerge = require('esbuild-plugin-json-merge')","symbol":"jsonMerge","correct":"const jsonMerge = require('esbuild-plugin-json-merge').default"},{"note":"Types are exported but only for TypeScript type usage; not runtime.","wrong":"import { JsonMergeOptions } from 'esbuild-plugin-json-merge'","symbol":"JsonMergeOptions","correct":"import type { JsonMergeOptions } from 'esbuild-plugin-json-merge'"}],"quickstart":{"code":"import esbuild from 'esbuild';\nimport jsonMerge from 'esbuild-plugin-json-merge';\n\nconst { version, name, description } = { version: '1.0.0', name: 'my-app', description: 'Example app' };\n\nawait esbuild.build({\n  entryPoints: ['src/index.js'],\n  outdir: 'dist',\n  plugins: [\n    jsonMerge({\n      entryPoints: ['src/manifest.json', { version, name, description }],\n      outfile: 'manifest.json',\n    }),\n  ],\n});","lang":"typescript","description":"Compiles an esbuild build that merges a file and inline object into a single JSON output."},"warnings":[{"fix":"Provide a custom merge function, e.g., using default-composer or lodash.merge.","message":"Default merge uses shallow Object.assign; nested objects overwrite instead of deep merge.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Test glob patterns with glob package directly if issues arise.","message":"entryPoints accepts glob patterns; ensure globs match expected files to avoid missing data.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Use dynamic import() in Node <12, or configure bundler for CommonJS.","message":"Library switched to ESM-only? Check usage if using older Node versions without ESM support.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Set outfile relative to outdir, or adjust esbuild's working directory.","message":"outfile path is relative to esbuild's outdir; not the project root by default.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Monitor releases for updates.","message":"Version 0.1.0 has no known deprecations yet; this is a placeholder for future.","severity":"deprecated","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'npm install esbuild-plugin-json-merge --save-dev'.","cause":"Package not installed or missing from node_modules.","error":"Error: Could not resolve 'esbuild-plugin-json-merge'"},{"fix":"Use 'const jsonMerge = require('esbuild-plugin-json-merge').default' or switch to ESM import.","cause":"Using default import in CJS without calling .default.","error":"TypeError: jsonMerge is not a function"},{"fix":"Ensure entryPoints is an array of strings/objects and outfile is a string.","cause":"Plugin options incorrectly passed or missing required fields.","error":"Error: [esbuild] Must use '--entry-names' or similar? No, this error arises from misconfiguration."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}