{"id":25417,"library":"esbuild-plugin-virtual","title":"esbuild-plugin-virtual","description":"An esbuild plugin for loading virtual modules from memory, inspired by @rollup/plugin-virtual. Version 0.1.0 is designed for esbuild's plugin system, enabling in-memory module resolution during bundling. Releases are stable but infrequent. Key differentiators: simple API (object map of module names to content), works with both Node and Deno, virtual modules are resolved with a 'virtual:' prefix internally. Compared to file-based alternatives, it eliminates filesystem I/O for tests or dynamic content. Currently ships TypeScript definitions, but lacks advanced features like virtual directories or lazy loading.","status":"active","version":"0.1.0","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","esbuild","plugin","virtual","vite","typescript"],"install":[{"cmd":"npm install esbuild-plugin-virtual","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-virtual","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-virtual","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; provides the plugin system and build API.","package":"esbuild","optional":true}],"imports":[{"note":"Package is ESM-only; default export is the plugin factory function. For CommonJS, use dynamic import or a bundler.","wrong":"const virtual = require('esbuild-plugin-virtual')","symbol":"default","correct":"import virtual from 'esbuild-plugin-virtual'"},{"note":"TypeScript types are included; the default export is a function returning an esbuild Plugin. You can also import the type for parameter definitions.","wrong":"","symbol":"virtual type","correct":"import type { VirtualPlugin } from 'esbuild-plugin-virtual'"},{"note":"The package also exports a named export 'virtual' identical to default. Avoid mixing default and named in same line.","wrong":"import { default as virtual } from 'esbuild-plugin-virtual'","symbol":"Plugin as named","correct":"import { virtual } from 'esbuild-plugin-virtual'"}],"quickstart":{"code":"import * as esbuild from 'esbuild';\nimport virtual from 'esbuild-plugin-virtual';\n\nawait esbuild.build({\n  entryPoints: ['src/entry.ts'],\n  bundle: true,\n  outfile: 'out.js',\n  plugins: [\n    virtual({\n      'my-module': `export const msg = 'Hello from virtual!';`,\n      'another-module': `export default 42;`,\n    }),\n  ],\n}).then(() => console.log('Built successfully'));","lang":"typescript","description":"Shows basic usage: creating virtual modules and bundling an entry point that imports them."},"warnings":[{"fix":"Use bare module names (e.g., 'my-module') without 'virtual:' prefix.","message":"Virtual module names must not contain the 'virtual:' prefix in the plugin object keys; internal resolution adds it automatically.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use virtual modules for JavaScript/TypeScript content only; for other file types, use different plugins.","message":"Virtual modules are resolved only for the entry points and files in the build graph; they cannot be used as plugins or loaders for other resources.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"N/A","message":"No known breaking changes in current version; package is simple and stable.","severity":"breaking","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":"Ensure package is installed: npm install --save-dev esbuild-plugin-virtual. Use import, not require.","cause":"Missing install or wrong import syntax (e.g., using require in ESM-only package).","error":"Error: Cannot find module 'esbuild-plugin-virtual'"},{"fix":"Use 'import virtual from \"esbuild-plugin-virtual\"' and ensure Node >= 12.20 for ESM.","cause":"Importing the default export incorrectly, or using an older Node version without ESM support.","error":"TypeError: virtual is not a function"},{"fix":"Correct: plugins: [virtual({...})]. Incorrect: plugins: [{...}].","cause":"Passing an object directly as a plugin instead of calling the virtual() factory function.","error":"The plugin \"virtual\" must be an object with a \"name\" property"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}