{"id":21282,"library":"esbuild-plugin-typescript-decorators","title":"esbuild-plugin-typescript-decorators","description":"An ESBuild plugin that enables TypeScript decorator metadata emission (emitDecoratorMetadata) which ESBuild does not support natively. Version 0.1.0 is the initial release, with no further updates. It fills a gap for developers using ESBuild with decorators, as ESBuild skips type system features. This plugin ensures Reflect.getMetadata returns correct type information (e.g., design:type) during transpilation. It is a lightweight alternative to switching to tsc or ts-jest, but limited to emitDecoratorMetadata support only.","status":"active","version":"0.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/jcindex/esbuild-plugin-typescript-decorators","tags":["javascript","esbuild","esbuild-plugin","typescript","decoraters","emitDecoratorMetadata"],"install":[{"cmd":"npm install esbuild-plugin-typescript-decorators","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-typescript-decorators","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-typescript-decorators","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency; plugin works with ESBuild v0.9+","package":"esbuild","optional":false}],"imports":[{"note":"Named export only; no default export.","wrong":"const esbuildDecorators = require('esbuild-plugin-typescript-decorators').esbuildDecorators","symbol":"esbuildDecorators","correct":"import { esbuildDecorators } from 'esbuild-plugin-typescript-decorators'"},{"note":"Must call as function, it returns a plugin object.","wrong":"plugins: [esbuildDecorators]","symbol":"esbuildDecorators (as plugin)","correct":"plugins: [esbuildDecorators()]"},{"note":"CommonJS require fails because esbuild is ESM-only in recent versions.","wrong":"const esbuild = require('esbuild')","symbol":"esbuild","correct":"import esbuild from 'esbuild'"}],"quickstart":{"code":"import esbuild from 'esbuild'\nimport { esbuildDecorators } from 'esbuild-plugin-typescript-decorators'\n\nawait esbuild.build({\n  entryPoints: ['src/index.ts'],\n  outfile: 'dist/index.js',\n  bundle: true,\n  tsconfig: 'tsconfig.json', // must have \"experimentalDecorators\": true and \"emitDecoratorMetadata\": true\n  plugins: [\n    esbuildDecorators()\n  ]\n})","lang":"typescript","description":"Shows basic usage to bundle a TypeScript file with decorator metadata using ESBuild and the plugin."},"warnings":[{"fix":"Use a different tool like tsc or swc for full decorator support.","message":"ESBuild does not support decorators at all beyond basic transpilation; this plugin only adds emitDecoratorMetadata, not full decorator support (e.g., no proposal-stage decorators).","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Use esbuildDecorators() in plugins array.","message":"Plugin must be called as a function (esbuildDecorators()), not passed directly.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Check compatibility; consider forking or using alternatives.","message":"Package has not been updated since v0.1.0; may not work with latest ESBuild versions (e.g., ESBuild v0.20+).","severity":"deprecated","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Install typescript: npm install --save-dev typescript","cause":"Missing TypeScript as a peer dependency.","error":"Error: [plugin: esbuild-decorators] Cannot find module 'typescript'"},{"fix":"Use import { esbuildDecorators } from 'esbuild-plugin-typescript-decorators' and then in plugins: [esbuildDecorators()]","cause":"Importing as default instead of named export or forgetting to call it.","error":"TypeError: esbuildDecorators is not a function"},{"fix":"Set \"experimentalDecorators\": true and \"emitDecoratorMetadata\": true in tsconfig.","cause":"tsconfig.json missing emitDecoratorMetadata or experimentalDecorators.","error":"Error: Reflect.getMetadata returns undefined even with plugin"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}