{"id":21256,"library":"esbuild-plugin-inline-import","title":"esbuild-plugin-inline-import","description":"An esbuild plugin that inlines the contents of static imports matching a configurable filter (default: `inline:` prefix). Current stable version is 1.1.0, with a maintenance status. It offers a simple `transform` callback to process imported file contents (e.g., run Sass, prepend headers), and supports stacking multiple instances for different import prefixes. Unlike generic esbuild plugins, this one is purpose-built for inlining with minimal configuration. Works with esbuild's bundling pipeline and ships TypeScript definitions. Release cadence is low (last release in 2022).","status":"maintenance","version":"1.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/claviska/esbuild-plugin-inline-import","tags":["javascript","esbuild","plugin","import","typescript"],"install":[{"cmd":"npm install esbuild-plugin-inline-import","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-inline-import","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-inline-import","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; this is an esbuild plugin that hooks into esbuild's build process.","package":"esbuild","optional":false}],"imports":[{"note":"Default export; named exports are not available. CJS require yields the plugin function directly.","wrong":"const { inlineImportPlugin } = require('esbuild-plugin-inline-import');","symbol":"inlineImportPlugin","correct":"import inlineImportPlugin from 'esbuild-plugin-inline-import';"},{"note":"For CJS, the module exports the function directly. No `.default` property.","wrong":"const inlineImportPlugin = require('esbuild-plugin-inline-import').default;","symbol":"default export (function)","correct":"const inlineImportPlugin = require('esbuild-plugin-inline-import');"},{"note":"Options type is exported as a type-only export. Must be imported with `type` keyword in TypeScript.","wrong":"import { InlineImportPluginOptions } from 'esbuild-plugin-inline-import';","symbol":"InlineImportPluginOptions","correct":"import type { InlineImportPluginOptions } from 'esbuild-plugin-inline-import';"}],"quickstart":{"code":"import esbuild from 'esbuild';\nimport inlineImportPlugin from 'esbuild-plugin-inline-import';\n\nawait esbuild.build({\n  entryPoints: ['src/app.ts'],\n  bundle: true,\n  outfile: 'dist/out.js',\n  plugins: [\n    inlineImportPlugin({\n      filter: /^inline:/,\n      transform: async (contents, args) => {\n        // Example: prepend a license comment\n        return `/* License */\\n${contents}`;\n      }\n    })\n  ]\n}).catch(() => process.exit(1));","lang":"typescript","description":"Shows basic usage: import plugin, configure with optional filter and transform, and include in esbuild build."},"warnings":[{"fix":"Ensure `inlineImportPlugin()` is the first plugin in the `plugins` array.","message":"Plugin must be placed before other plugins in the plugins array, otherwise resolution errors may occur.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Avoid heavy transforms or cache results if possible. Test build performance with and without the plugin.","message":"The `transform` function is called for every matching import; expensive operations (e.g., Sass compilation) can significantly slow down esbuild builds.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Only override `namespace` if you fully understand the implications; otherwise rely on the random default.","message":"The `namespace` option defaults to a random string per instance. Setting a custom namespace may cause conflicts if multiple instances share the same namespace.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Use only static `import` statements with the configured filter prefix.","message":"The plugin only inlines imports that are statically analyzable and bundled by esbuild. Dynamic imports (e.g., `import()`) are not supported.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Ensure `inlineImportPlugin()` is the first plugin in the `plugins` array.","cause":"The plugin is not registered or is placed after other plugins that resolve imports.","error":"Could not resolve 'inline:./file.txt'"},{"fix":"Use default import: `import inlineImportPlugin from 'esbuild-plugin-inline-import'` or `const inlineImportPlugin = require('esbuild-plugin-inline-import')`.","cause":"Incorrect import style: using named import for a default export.","error":"TypeError: inlineImportPlugin is not a function"},{"fix":"Run `npm install --save-dev esbuild-plugin-inline-import`.","cause":"Package not installed or not in `node_modules`.","error":"Cannot find module 'esbuild-plugin-inline-import'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}