{"id":25195,"library":"effect-sugar-esbuild","title":"effect-sugar-esbuild","description":"An esbuild plugin that transforms Effect-TS gen block syntax (`const result = yield* effect`) into valid JavaScript. Version 0.2.0 supports esbuild >=0.17.0. It is part of the effect-sugar ecosystem alongside effect-sugar-vite and effect-sugar-tsc. Enables using Effect-TS generators without requiring ts-patch or Vite. Different from effect-sugar-tsc which uses ts-patch, this plugin integrates directly as an esbuild plugin for faster builds. Ships TypeScript type definitions. Released by clayroach on GitHub under MIT license.","status":"active","version":"0.2.0","language":"javascript","source_language":"en","source_url":"https://github.com/clayroach/effect-sugar","tags":["javascript","esbuild","esbuild-plugin","effect","effect-ts","transformer","gen-blocks","tsx","bundler","typescript"],"install":[{"cmd":"npm install effect-sugar-esbuild","lang":"bash","label":"npm"},{"cmd":"yarn add effect-sugar-esbuild","lang":"bash","label":"yarn"},{"cmd":"pnpm add effect-sugar-esbuild","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency: esbuild plugin API required for bundling","package":"esbuild","optional":false}],"imports":[{"note":"Named export, not default. ESM-only package.","wrong":"import effectSugarESBuild from 'effect-sugar-esbuild'","symbol":"effectSugarESBuild","correct":"import { effectSugarESBuild } from 'effect-sugar-esbuild'"},{"note":"Requires using destructuring because it's a named export. The package may not support CommonJS via require; prefer ESM imports.","wrong":"const effectSugarESBuild = require('effect-sugar-esbuild')","symbol":"effectSugarESBuild","correct":"const { effectSugarESBuild } = require('effect-sugar-esbuild')"},{"note":"Notice the lowercase start: the export is camelCase starting with lowercase 'e'.","wrong":"import { EffectSugarESBuild } from 'effect-sugar-esbuild'","symbol":"effectSugarESBuild","correct":"import { effectSugarESBuild } from 'effect-sugar-esbuild'"}],"quickstart":{"code":"// Install: npm install --save-dev effect-sugar-esbuild\n\n// esbuild.config.js\nimport { effectSugarESBuild } from 'effect-sugar-esbuild';\n\nexport default {\n  plugins: [effectSugarESBuild()],\n  // ... other esbuild options\n};\n\n// Or programmatically:\nimport * as esbuild from 'esbuild';\nimport { effectSugarESBuild } from 'effect-sugar-esbuild';\n\nawait esbuild.build({\n  entryPoints: ['src/index.ts'],\n  bundle: true,\n  outfile: 'dist/index.js',\n  plugins: [effectSugarESBuild()],\n});","lang":"typescript","description":"Demonstrates adding the Effect-TS sugar plugin to esbuild for transforming gen blocks in both config file and programmatic usage."},"warnings":[{"fix":"Pin to exact version (e.g., effect-sugar-esbuild@0.2.0) to avoid unexpected breaks.","message":"The package is pre-1.0.0 and may introduce breaking changes in minor versions.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Upgrade esbuild to >=0.17.0.","message":"The plugin only works with esbuild >=0.17.0. Using older esbuild versions will cause errors.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Install effect (e.g., effect, @effect/core) separately.","message":"This plugin only transforms gen block syntax; it does NOT include the Effect-TS runtime. You must also install the main effect package.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use import instead of require, or set \"type\": \"module\" in package.json.","cause":"Attempting to require() an ESM-only package.","error":"Error: esbuild: Must use import to load ES Module: /path/to/effect-sugar-esbuild"},{"fix":"Use plugins: [effectSugarESBuild()] (with parentheses) in esbuild config.","cause":"Passing the function reference instead of calling it.","error":"Error: [plugin: effect-sugar] The plugin must be called with effectSugarESBuild()"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}