{"id":25264,"library":"esbuild-c","title":"esbuild-c","description":"esbuild-c (v0.1.37) enhances esbuild with config processing capabilities: aligning CLI options with the JS API, supporting config merging via 'extends', and loading configs in various formats (JSON, YAML, JS, TS) using cosmiconfig. As a PoC, it addresses esbuild issue #884 (CLI plugin specification) and offers both CLI and programmatic usage. It requires esbuild >=0.19.0 and ships TypeScript types. Unlike alternatives like esbuild-config or esbuild-resolve-config, it focuses on extendable config merging and format flexibility.","status":"active","version":"0.1.37","language":"javascript","source_language":"en","source_url":"https://github.com/antongolub/misc","tags":["javascript","esbuild","config","build","bundler","typescript"],"install":[{"cmd":"npm install esbuild-c","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-c","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-c","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: core bundler that esbuild-c configures","package":"esbuild","optional":false}],"imports":[{"note":"ESM-only since v0.1.x; use dynamic import for CommonJS","wrong":"const { loadConfig } = require('esbuild-c')","symbol":"loadConfig","correct":"import { loadConfig } from 'esbuild-c'"},{"note":"Parses CLI arguments into esbuild build options","wrong":"import { parseArgv } from 'esbuild-c' // correct; no wrong pattern commonly seen","symbol":"parseArgv","correct":"import { parseArgv } from 'esbuild-c'"},{"note":"Default export is the CLI function; not commonly imported directly","wrong":"import * as esbuildC from 'esbuild-c'","symbol":"default (CLI runner)","correct":"import esbuildC from 'esbuild-c'"}],"quickstart":{"code":"// CLI usage: npx esbuild-c --config esbuild.config.js\n\n// Programmatic usage (ESM)\nimport esbuild from 'esbuild';\nimport { loadConfig, parseArgv } from 'esbuild-c';\n\nconst flags = parseArgv(process.argv.slice(2));\nconst config = await loadConfig({\n  // optional overrides: cwd, stopDir, searchPlaces\n});\n\n// Merge flags into config (flags have precedence)\nconst merged = { ...config, ...flags };\n\nawait esbuild.build(merged);\n","lang":"typescript","description":"Shows how to use esbuild-c programmatically: parse CLI args, load config, merge, and build with esbuild."},"warnings":[{"fix":"Pin exact version and monitor GitHub releases for breaking changes.","message":"Package is PoC (Proof of Concept) - API may change between minor versions.","severity":"gotcha","affected_versions":"<0.2"},{"fix":"Specify an explicit --config path to avoid accidental loading.","message":"Config resolution uses cosmiconfig, which searches for 'esbuild' config key in package.json or dedicated files (e.g., esbuild.config.js). Unexpected configs may be loaded.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use plugin paths or register plugins programmatically.","message":"CLI plugin specification via --plugin flag may require additional setup (see esbuild issue #884).","severity":"gotcha","affected_versions":">=0.0.1"}],"env_vars":null,"search_vec":"'0.19.0':59 '884':45 'address':42 'align':14 'altern':65 'api':20 'build':87 'bundler':88 'c':3,6 'capabl':13 'cli':15,46,52 'config':11,22,28,69,74,79,86 'cosmiconfig':37 'enhanc':8 'esbuild':2,5,9,43,58,68,72,85 'esbuild-c':1,4 'esbuild-config':67 'esbuild-resolve-config':71 'extend':25,78 'flexibl':83 'focus':76 'format':31,82 'issu':44 'javascript':84 'js':19,34 'json':32 'like':66 'load':27 'merg':23,80 'offer':50 'option':16 'plugin':47 'poc':40 'process':12 'programmat':54 'requir':57 'resolv':73 'ship':61 'specif':48 'support':21 'ts':35 'type':63 'typescript':62,89 'unlik':64 'usag':55 'use':36 'v0.1.37':7 'various':30 'via':24 'yaml':33","created_at":"2026-05-01T13:43:52.535783+00:00","updated_at":"2026-05-01T13:43:52.535783+00:00","problems":[{"fix":"Ensure esbuild-c and esbuild are installed: npm i -D esbuild-c esbuild. For ESM, set \"type\": \"module\" in package.json or use .mjs extension.","cause":"Package not installed or ESM not fully configured.","error":"Error: Cannot find module 'esbuild-c'"},{"fix":"Use dynamic import: const { loadConfig } = await import('esbuild-c'); or switch to ESM.","cause":"Running import syntax in a CommonJS file without ESM configuration.","error":"SyntaxError: Cannot use import statement outside a module"},{"fix":"Use named import: import { loadConfig } from 'esbuild-c'.","cause":"Incorrect import (e.g., default import instead of named import).","error":"TypeError: loadConfig is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"esbuild-c","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/antongolub/misc","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/esbuild-c","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","serialization"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-05-01","next_check":"2026-07-30","install_tag":null}}