{"id":25562,"library":"f2e-middle-esbuild","title":"f2e-server esbuild middleware","description":"f2e-middle-esbuild is a plugin-middleware for the f2e-server framework that integrates esbuild for fast JavaScript/TypeScript bundling and transpilation. Version 0.11.3 is the latest stable release. It allows configuring esbuild build options via an `.esbuildrc.js` file, supports external module splitting for faster dev builds, and provides a bundle size analyzer endpoint. Compared to standalone esbuild usage, it seamlessly integrates with f2e-server's middleware pipeline, lifecycle events, and file watching. The package ships TypeScript type definitions.","status":"active","version":"0.11.3","language":"javascript","source_language":"en","source_url":"https://github.com/f2e-server/f2e-middle-esbuild","tags":["javascript","f2e-server","middleware","esbuild","typescript"],"install":[{"cmd":"npm install f2e-middle-esbuild","lang":"bash","label":"npm"},{"cmd":"yarn add f2e-middle-esbuild","lang":"bash","label":"yarn"},{"cmd":"pnpm add f2e-middle-esbuild","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; this is a middleware for f2e-server and requires it to run.","package":"f2e-server","optional":false}],"imports":[{"note":"BuildOptions is a TypeScript type export. Use type import to avoid runtime issues. The package is ESM and CJS compatible but types are only for TS.","wrong":"const { BuildOptions } = require('f2e-middle-esbuild')","symbol":"BuildOptions","correct":"import type { BuildOptions } from 'f2e-middle-esbuild'"},{"note":"Default export is the middleware factory function. In CJS, require returns the default directly; .default is not needed.","wrong":"const esbuildMiddleware = require('f2e-middle-esbuild').default","symbol":"default","correct":"import esbuildMiddleware from 'f2e-middle-esbuild'"},{"note":"EsbuildMiddlewareOptions is a TypeScript type for the middleware config object.","wrong":"const { EsbuildMiddlewareOptions } = require('f2e-middle-esbuild')","symbol":"EsbuildMiddlewareOptions","correct":"import type { EsbuildMiddlewareOptions } from 'f2e-middle-esbuild'"}],"quickstart":{"code":"// .f2econfig.js\nmodule.exports = {\n  middleware: [\n    {\n      middleware: 'esbuild',\n      watches: [/\\.[jet]?sx?$/]\n    }\n  ]\n};\n\n// .esbuildrc.js (created by copy from node_modules)\n/** @type { import('f2e-middle-esbuild').BuildOptions[] } */\nlet config = [\n  {\n    entryPoints: { index: 'src/index.tsx' },\n    bundle: true,\n    format: 'iife',\n    loader: { '.tsx': 'tsx', '.ts': 'ts' },\n    sourcemap: true,\n    target: 'chrome70'\n  }\n];\nmodule.exports = config;\n\n// index.html\n<script src=\"src/index.tsx\"></script>","lang":"typescript","description":"Shows minimum configuration for TypeScript bundling with f2e-middle-esbuild in a f2e-server project."},"warnings":[{"fix":"Run the copy command as documented, or create your own config file with the correct structure.","message":"The .esbuildrc.js file must be copied from node_modules initially: `cp ./node_modules/f2e-middle-esbuild/.esbuildrc.js ./`. Otherwise the middleware will not find the default config.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Avoid relying on custom options unless necessary; check changelog for updates.","message":"The option `ignore_external` is a custom parameter (not esbuild's). Its behavior may change in future versions.","severity":"deprecated","affected_versions":"<=0.11.3"},{"fix":"Ensure the middleware is configured properly and the entry point name matches.","message":"Bundle size analyzer is accessed via /static/index.js.html (or based on entry name). This endpoint is only available in development mode and may not exist if the middleware configuration differs.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Wrap your config in an array even if you have only one configuration.","message":"Version 0.10.0 changed the configuration format from a single object to an array of BuildOptions (multiple configurations). Old single-object configs will break.","severity":"breaking","affected_versions":"<0.10.0"},{"fix":"Set `ignore_external: false` and provide at least one entry in `external`.","message":"The external_splits feature requires `ignore_external` to be false and `external` array to be non-empty. If either condition isn't met, external_splits is silently ignored.","severity":"gotcha","affected_versions":">=0.10.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 f2e-server --save-dev` (or save) to install the peer dependency.","cause":"f2e-middle-esbuild requires f2e-server as a peer dependency. It is not installed automatically.","error":"Error: Cannot find module 'f2e-server'"},{"fix":"Copy the default config from node_modules: `cp ./node_modules/f2e-middle-esbuild/.esbuildrc.js ./` or create your own.","cause":"The middleware expects an .esbuildrc.js file in the project root, but it doesn't exist.","error":"Error: ENOENT: no such file or directory, open '.esbuildrc.js'"},{"fix":"Use `const esbuildMiddleware = require('f2e-middle-esbuild');` without .default.","cause":"When using require('f2e-middle-esbuild') in CJS, the default export is the middleware function, but using .default may result in undefined.","error":"TypeError: f2eMiddleware is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}