Xpack internals for Zephyr
npm install zephyr-xpack-internalInternal Package - Shared types, Module Federation capabilities, and utilities for bundlers built on top of Webpack or Rspack. This package provides common functionality for Webpack-compatible bundlers.
> Note: This is an internal package used by Webpack and Rspack plugins. It is not intended for direct use by end users.
The Zephyr XPack Internal package provides shared functionality for Webpack-compatible bundlers:
- Module Federation: Advanced Module Federation capabilities and utilities
- Federation Dashboard: Build-time analytics and federation insights
- XPack Extraction: Asset and configuration extraction for Webpack/Rspack
- Lifecycle Events: Build lifecycle hooks and event management
- Shared Types: Common TypeScript interfaces and types
- Legacy Module Federation dashboard functionality
- Build statistics collection and analysis
- Dependency graph conversion and visualization
- Federation metadata processing
- Build lifecycle event hooks
- Deployment setup and logging configuration
- Integration points for build processes
- Standardized build lifecycle management
- Event dispatching and handling
- Plugin coordination during builds
- Webpack/Rspack asset extraction utilities
- Module Federation configuration extraction
- Runtime code generation for federation
- Federation dependency analysis
Advanced Module Federation analytics and insights:
``typescript`
interface FederationBuildStats {
modules: ModuleInfo[];
dependencies: DependencyInfo[];
remotes: RemoteInfo[];
exposes: ExposeInfo[];
shared: SharedInfo[];
buildTime: number;
bundleSize: number;
}
`typescript`
// Convert webpack stats to federation graph
const graph = convertToGraph(webpackStats, {
includeModules: true,
includeDependencies: true,
includeChunks: true,
});
`typescript`
// Extract license information from modules
const licenses = getLicenses(modules, {
includeDevDependencies: false,
groupByLicense: true,
});
`typescript
// Extract federation configuration from webpack config
const federationConfig = extractFederationConfig(webpackConfig);
// Iterate through remote configurations
const remotes = iterateFederatedRemoteConfig(federationConfig);
// Process federation dependencies
const deps = extractFederatedDependencyPairs(config);
`
`typescript`
// Create Module Federation runtime code
const runtimeCode = createMfRuntimeCode({
remotes: federationConfig.remotes,
shared: federationConfig.shared,
exposes: federationConfig.exposes,
});
`typescript
// Detect Module Federation plugin in webpack config
const isModuleFederation = isModuleFederationPlugin(plugin);
// Extract federation plugin options
const options = makeCopyOfModuleFederationOptions(plugin);
`
`typescript`
// Build comprehensive assets map
const assetsMap = buildWebpackAssetsMap(compilation, {
includeSourceMaps: true,
includeChunks: true,
includeModules: true,
});
`typescript
// Upload agent for assets
const uploadAgent = new ZeXpackUploadAgent({
assets: assetsMap,
federation: federationConfig,
buildStats: stats,
});
await uploadAgent.upload();
`
Compute versioning strategy for federated modules:
`typescript`
// Compute version strategy for federation
const versionStrategy = computeVersionStrategy({
packageJson: packageInfo,
gitInfo: gitContext,
buildContext: buildInfo,
});
Merge multiple federation graphs:
`typescript`
// Merge federation graphs from multiple builds
const mergedGraph = mergeGraphs([hostGraph, remoteGraph1, remoteGraph2], {
deduplicateModules: true,
preserveMetadata: true,
});
`typescript`
// Webpack plugin integration
class ZephyrWebpackPlugin {
apply(compiler) {
// Use xpack utilities
const federationConfig = extractFederationConfig(compiler.options);
const assetsMap = buildWebpackAssetsMap(compilation);
}
}
`typescript`
// Rspack plugin integration
class ZephyrRspackPlugin {
apply(compiler) {
// Reuse webpack-compatible utilities
const federationConfig = extractFederationConfig(compiler.options);
const stats = convertToGraph(compilation.getStats());
}
}
`typescript`
// Advanced federation analytics
const dashboardPlugin = new FederationDashboardPlugin({
filename: 'federation-stats.json',
includeModules: true,
includeDependencies: true,
computeVersionStrategy: true,
});
`typescript`
// Add runtime requirements for federation
addRuntimeRequirementToPromiseExternal(compilation, 'federation-runtime');
- Comprehensive test data for federation scenarios
- Mock configurations for testing plugins
- Sample build statistics and dependency graphs
`typescript`
// Validate federation parameters
const isValid = validateParams({
federationConfig,
webpackConfig,
buildContext,
});
Webpack and Rspack plugins use this package:
`typescript
import { extractFederationConfig, buildWebpackAssetsMap, convertToGraph, FederationDashboardPlugin } from 'zephyr-xpack-internal';
// In webpack/rspack plugin
const federationConfig = extractFederationConfig(compiler.options);
const assetsMap = buildWebpackAssetsMap(compilation);
const graph = convertToGraph(stats);
`
For internal development:
`bashBuild the package
npm run build
This is an internal package. Contributions should be made through the main Zephyr plugins repository. Please read our contributing guidelines for more information.
Licensed under the Apache-2.0 License. See LICENSE for more information.