{"id":25358,"library":"esbuild-plugin-inline-functions","title":"esbuild-plugin-inline-functions","description":"An esbuild plugin that inlines JavaScript functions annotated with /* @inline */ hints, eliminating function call overhead. Version 0.2.0 (stable, active development). Unlike manual inlining or other tools, it automatically handles imports, dependencies, control flow (early returns, conditionals), variable scoping, and execution order. Supports both regular functions and arrow functions. Includes a /* @pure */ annotation to enable hoisting of duplicate pure function calls. Ships TypeScript declarations. Requires @babel/parser, @babel/traverse, @babel/types as peer dependencies. Works in any esbuild context (e.g., tsup, Vite, pure esbuild).","status":"active","version":"0.2.0","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","typescript"],"install":[{"cmd":"npm install esbuild-plugin-inline-functions","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-inline-functions","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-inline-functions","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Parses JavaScript/TypeScript source code to detect inline hints.","package":"@babel/parser","optional":false},{"reason":"Traverses AST to find function declarations and calls for inlining.","package":"@babel/traverse","optional":false},{"reason":"Provides AST node type utilities used during traversal.","package":"@babel/types","optional":false}],"imports":[{"note":"Named export, not default. For CommonJS: const { inlineFunctionsPlugin } = require('esbuild-plugin-inline-functions'). Works with both ESM and CJS.","wrong":"import inlineFunctionsPlugin from 'esbuild-plugin-inline-functions'","symbol":"inlineFunctionsPlugin","correct":"import { inlineFunctionsPlugin } from 'esbuild-plugin-inline-functions'"},{"note":"No default export exists; only the named export inlineFunctionsPlugin is available. Using default import will result in undefined.","wrong":"import inlineFunctionsPlugin from 'esbuild-plugin-inline-functions'","symbol":"default","correct":"import { inlineFunctionsPlugin } from 'esbuild-plugin-inline-functions'"},{"note":"CommonJS usage with named destructuring.","wrong":"","symbol":"require","correct":"const { inlineFunctionsPlugin } = require('esbuild-plugin-inline-functions')"}],"quickstart":{"code":"import { inlineFunctionsPlugin } from 'esbuild-plugin-inline-functions';\nimport * as esbuild from 'esbuild';\n\nawait esbuild.build({\n  entryPoints: ['input.js'],\n  outfile: 'output.js',\n  plugins: [inlineFunctionsPlugin()],\n});\n\n// input.js should contain functions annotated with /* @inline */ comment\n/* @inline */\nfunction add(a, b) {\n  return a + b;\n}\n\nconsole.log(add(1, 2));","lang":"javascript","description":"Shows basic usage with esbuild: import the plugin, apply it, and annotate functions with /* @inline */ to inline their calls."},"warnings":[{"fix":"Set esbuild plugins after ensuring esbuild handles TypeScript (type stripping) or use the plugin only on JavaScript files. Alternatively, verify if plugin version supports TypeScript via @babel/preset-typescript.","message":"The plugin uses @babel/parser which requires TypeScript files to have the syntax plugin? Double check: When using with TypeScript, ensure @babel/parser is configured to parse TypeScript. The plugin may not support TypeScript syntax out of the box.","severity":"gotcha","affected_versions":"0.2.0"},{"fix":"Update esbuild to version 0.12 or later.","message":"If using an older version of esbuild (pre-0.12), the plugin API may not be compatible. Always use esbuild >= 0.12.","severity":"deprecated","affected_versions":">=0.0.0"},{"fix":"Use /* @inline */ exactly; avoid // @inline or other whitespace variations.","message":"The /* @inline */ hint is a comment, not a decorator or pragma. It must appear exactly before a function declaration (not expression) and in the exact /* @inline */ format, including the leading /* and trailing */","severity":"gotcha","affected_versions":"0.2.0"},{"fix":"Pin to 0.2.0 or check release notes for breaking changes.","message":"In version 0.1.0, the plugin used a different API? (Check changelog). Version 0.2.0 changed how hints are parsed? Currently no known breaking changes, but be aware of potential future ones.","severity":"breaking","affected_versions":">=0.2.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 @babel/parser@^7.26.3","cause":"Missing peer dependency @babel/parser.","error":"Error: Cannot find module '@babel/parser'"},{"fix":"Use import { inlineFunctionsPlugin } from 'esbuild-plugin-inline-functions';","cause":"Default import used instead of named import.","error":"TypeError: inlineFunctionsPlugin is not a function"},{"fix":"Call inlineFunctionsPlugin() without arguments. If options are needed in future, check docs.","cause":"Inline functions plugin expects no arguments (or an options object?). Current docs show no arguments.","error":"Error: The plugin must be called with no arguments?"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}