ModuleConfig
Core configuration interface for the module system.
Interface Definition
interface ModuleConfig {
links?: Record<string, string>;
imports?: Record<string, string>;
exports?: ModuleConfigExportExports;
}
links
- Type:
Record<string, string>
- Description: Module linking configuration. Key is remote module name, value is module build output directory path.
imports
- Type:
Record<string, string>
- Description: Module import mapping configuration. Key is local module identifier, value is remote module path.
exports
- Type:
ModuleConfigExportExports
- Description: Module export configuration. Supports multiple configuration forms.
Type Definitions
ModuleConfigExportExports
type ModuleConfigExportExports =
| Array<string | Record<string, string | ModuleConfigExportObject>>
| Record<string, string | ModuleConfigExportObject>;
Union type for export configuration, supporting mixed array (strings and objects) and object forms.
ModuleConfigExportObject
type ModuleConfigExportObject = {
input?: string;
entryPoints?: Record<BuildEnvironment, string | false>;
rewrite?: boolean;
};
input
- Type:
string
- Description: Input file path, relative to project root directory.
entryPoints
- Type:
Record<BuildEnvironment, string | false>
- Description: Environment-specific input file configuration. Supports client and server differentiated builds.
rewrite
- Type:
boolean
- Default:
true
- Description: Whether to rewrite import paths within modules.
BuildEnvironment
type BuildEnvironment = 'client' | 'server';
Build target environment type.
Parsed Interface
ParsedModuleConfig
interface ParsedModuleConfig {
name: string;
root: string;
links: Record<string, LinkInfo>;
imports: Record<string, string>;
exports: ParsedModuleConfigExports;
}
ParsedModuleConfigExport
interface ParsedModuleConfigExport {
name: string;
entryPoints: Record<BuildEnvironment, string | false>;
rewrite: boolean;
}
Prefix Syntactic Sugar
The following prefixes are supported in string items of exports
array form:
npm: Prefix
- Format:
'npm:packageName'
- Processing: Automatically sets
rewrite: false
, maintains original import paths
- Example:
'npm:axios'
→ { input: 'axios', rewrite: false }
root: Prefix
- Format:
'root:path/to/file.ext'
- Processing: Automatically sets
rewrite: true
, removes file extension, adds ./
prefix
- Example:
'root:src/utils/format.ts'
→ { input: './src/utils/format', rewrite: true }
Default Export Items
The framework automatically adds the following default export items for each module:
{
'src/entry.client': {
entryPoints: {
client: './src/entry.client',
server: false
}
},
'src/entry.server': {
entryPoints: {
client: false,
server: './src/entry.server'
}
}
}
Examples
Basic Configuration
export default {
modules: {
links: {
'shared-lib': '../shared-lib/dist'
},
imports: {
'axios': 'shared-lib/axios'
},
exports: [
'npm:axios',
'root:src/utils/format.ts'
]
}
} satisfies EsmxOptions;
Array Form
exports: [
'npm:axios',
'root:src/utils/format.ts',
{
'api-client': './src/api/client.ts'
}
]
Object Form
exports: {
'axios': 'axios',
'utils': './src/utils/index.ts',
'storage': {
entryPoints: {
client: './src/storage/indexedDB.ts',
server: './src/storage/filesystem.ts'
}
}
}
Mixed Array Form
exports: [
{
'utils': './src/utils.ts',
'api': './src/api.ts'
},
{
'components': {
input: './src/components/index.ts',
rewrite: true
}
}
]