Skip to content

@path-ioc/unplugin API Reference ​

@path-ioc/unplugin is a universal build-time plugin. During build and Hot Module Replacement (HMR), it automatically scans module directories, generates ignore.modular.d.ts type declarations, and injects the global module registry via the virtual module virtual:modular-container.


Installation ​

bash
pnpm add -D @path-ioc/unplugin

Bundler Adapters ​

Import via universal default export or named bundler factory functions:

typescript
// Universal entry
import pathIoc from "@path-ioc/unplugin";

// Or specific named bundler adapters
import {
  vitePlugin,
  rolldownPlugin,
  webpackPlugin,
  rspackPlugin,
  rollupPlugin,
  esbuildPlugin,
} from "@path-ioc/unplugin";

Configuration Options (PathIocPluginOptions) ​

OptionTypeDefaultDescription
modulesPathstring'src/modules'Root directory to scan for modules. v0.1.7+: Supports targeted multi-module compilation using brace syntax (e.g., src/modules/{core,admin}). To maintain path determinism, wildcards (*, ?) and nested braces are not supported.
typeFileOutputstring'types'Destination directory for auto-generated ignore.modular.d.ts. Add to .gitignore.

Virtual Module (virtual:modular-container) ​

The plugin injects the virtual module virtual:modular-container into your application at build time:

typescript
import {
  modules, // Complete module descriptor array: { key: string, module: IOCModule }[]
  createModularContainer, // High-performance container bootstrapper: (targetContainer?: Record<string, any>) => Promise<ModularContainer>
} from "virtual:modular-container";
  • Compiled Graph Cache: createModularContainer caches compiledGraph in a module-level closure. The DAG dependency graph is compiled only once at process cold start; subsequent high-concurrency requests reuse the static graph to hydrate per-request containers in ~21.2µs;
  • Vite / Rolldown / Rollup: Memory-streamed virtual module injection without generating temporary entry files on disk;
  • Webpack 5 / Rspack: Automatically creates a bridge file at node_modules/.virtual-modular-container.js to ensure 100% compatibility with Webpack module resolution.

Released under the MIT License.