Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions crates/node_binding/napi-binding.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,7 @@ export declare enum BuiltinPluginName {
ProvideSharedPlugin = 'ProvideSharedPlugin',
ConsumeSharedPlugin = 'ConsumeSharedPlugin',
ModuleFederationRuntimePlugin = 'ModuleFederationRuntimePlugin',
ModuleFederationManifestPlugin = 'ModuleFederationManifestPlugin',
NamedModuleIdsPlugin = 'NamedModuleIdsPlugin',
NaturalModuleIdsPlugin = 'NaturalModuleIdsPlugin',
DeterministicModuleIdsPlugin = 'DeterministicModuleIdsPlugin',
Expand Down Expand Up @@ -2434,6 +2435,32 @@ export interface RawLimitChunkCountPluginOptions {
maxChunks: number
}

export interface RawManifestExposeOption {
path: string
name: string
}

export interface RawManifestSharedOption {
name: string
version?: string
requiredVersion?: string
singleton?: boolean
}

export interface RawModuleFederationManifestPluginOptions {
name?: string
globalName?: string
fileName?: string
filePath?: string
statsFileName?: string
manifestFileName?: string
disableAssetsAnalyze?: boolean
remoteAliasMap?: Record<string, RawRemoteAliasTarget>
exposes?: Array<RawManifestExposeOption>
shared?: Array<RawManifestSharedOption>
buildInfo?: RawStatsBuildInfo
}

export interface RawModuleFederationRuntimePluginOptions {
entryRuntime?: string | undefined
}
Expand Down Expand Up @@ -2656,6 +2683,11 @@ export interface RawRelated {
sourceMap?: string
}

export interface RawRemoteAliasTarget {
name: string
entry?: string
}

export interface RawRemoteOptions {
key: string
external: Array<string>
Expand Down Expand Up @@ -2815,6 +2847,11 @@ export interface RawSplitChunksOptions {
maxInitialSize?: number | RawSplitChunkSizes
}

export interface RawStatsBuildInfo {
buildVersion: string
buildName?: string
}

export interface RawStatsOptions {
colors: boolean
}
Expand Down
12 changes: 9 additions & 3 deletions crates/rspack_binding_api/src/raw_options/raw_builtins/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use napi_derive::napi;
use raw_dll::{RawDllReferenceAgencyPluginOptions, RawFlagAllModulesAsUsedPluginOptions};
use raw_ids::RawOccurrenceChunkIdsPluginOptions;
use raw_lightning_css_minimizer::RawLightningCssMinimizerRspackPluginOptions;
use raw_mf::RawModuleFederationRuntimePluginOptions;
use raw_mf::{RawModuleFederationManifestPluginOptions, RawModuleFederationRuntimePluginOptions};
use raw_sri::RawSubresourceIntegrityPluginOptions;
use rspack_core::{BoxPlugin, Plugin, PluginExt};
use rspack_error::{Result, ToStringResultToRspackResultExt};
Expand Down Expand Up @@ -75,8 +75,8 @@ use rspack_plugin_lightning_css_minimizer::LightningCssMinimizerRspackPlugin;
use rspack_plugin_limit_chunk_count::LimitChunkCountPlugin;
use rspack_plugin_merge_duplicate_chunks::MergeDuplicateChunksPlugin;
use rspack_plugin_mf::{
ConsumeSharedPlugin, ContainerPlugin, ContainerReferencePlugin, ModuleFederationRuntimePlugin,
ProvideSharedPlugin, ShareRuntimePlugin,
ConsumeSharedPlugin, ContainerPlugin, ContainerReferencePlugin, ModuleFederationManifestPlugin,
ModuleFederationRuntimePlugin, ProvideSharedPlugin, ShareRuntimePlugin,
};
use rspack_plugin_module_info_header::ModuleInfoHeaderPlugin;
use rspack_plugin_module_replacement::{ContextReplacementPlugin, NormalModuleReplacementPlugin};
Expand Down Expand Up @@ -172,6 +172,7 @@ pub enum BuiltinPluginName {
ProvideSharedPlugin,
ConsumeSharedPlugin,
ModuleFederationRuntimePlugin,
ModuleFederationManifestPlugin,
NamedModuleIdsPlugin,
NaturalModuleIdsPlugin,
DeterministicModuleIdsPlugin,
Expand Down Expand Up @@ -504,6 +505,11 @@ impl<'a> BuiltinPlugin<'a> {
.map_err(|report| napi::Error::from_reason(report.to_string()))?;
plugins.push(ModuleFederationRuntimePlugin::new(options.into()).boxed())
}
BuiltinPluginName::ModuleFederationManifestPlugin => {
let options = downcast_into::<RawModuleFederationManifestPluginOptions>(self.options)
.map_err(|report| napi::Error::from_reason(report.to_string()))?;
plugins.push(ModuleFederationManifestPlugin::new(options.into()).boxed())
}
BuiltinPluginName::NamedModuleIdsPlugin => {
plugins.push(NamedModuleIdsPlugin::default().boxed())
}
Expand Down
103 changes: 100 additions & 3 deletions crates/rspack_binding_api/src/raw_options/raw_builtins/raw_mf.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
use std::sync::Arc;
use std::{collections::HashMap, sync::Arc};

use napi::Either;
use napi_derive::napi;
use rspack_plugin_mf::{
ConsumeOptions, ConsumeSharedPluginOptions, ConsumeVersion, ContainerPluginOptions,
ContainerReferencePluginOptions, ExposeOptions, ModuleFederationRuntimePluginOptions,
ProvideOptions, ProvideVersion, RemoteOptions,
ContainerReferencePluginOptions, ExposeOptions, ManifestExposeOption, ManifestSharedOption,
ModuleFederationManifestPluginOptions, ModuleFederationRuntimePluginOptions, ProvideOptions,
ProvideVersion, RemoteAliasTarget, RemoteOptions, StatsBuildInfo,
};

use crate::options::{
Expand Down Expand Up @@ -224,3 +225,99 @@ impl From<RawModuleFederationRuntimePluginOptions> for ModuleFederationRuntimePl
}
}
}

#[derive(Debug)]
#[napi(object)]
pub struct RawRemoteAliasTarget {
pub name: String,
pub entry: Option<String>,
}

#[derive(Debug)]
#[napi(object)]
pub struct RawManifestExposeOption {
pub path: String,
pub name: String,
}

#[derive(Debug)]
#[napi(object)]
pub struct RawManifestSharedOption {
pub name: String,
pub version: Option<String>,
pub required_version: Option<String>,
pub singleton: Option<bool>,
}

#[derive(Debug)]
#[napi(object)]
pub struct RawStatsBuildInfo {
pub build_version: String,
pub build_name: Option<String>,
}

#[derive(Debug)]
#[napi(object)]
pub struct RawModuleFederationManifestPluginOptions {
pub name: Option<String>,
pub global_name: Option<String>,
pub file_name: Option<String>,
pub file_path: Option<String>,
pub stats_file_name: Option<String>,
pub manifest_file_name: Option<String>,
pub disable_assets_analyze: Option<bool>,
pub remote_alias_map: Option<HashMap<String, RawRemoteAliasTarget>>,
pub exposes: Option<Vec<RawManifestExposeOption>>,
pub shared: Option<Vec<RawManifestSharedOption>>,
pub build_info: Option<RawStatsBuildInfo>,
}

impl From<RawModuleFederationManifestPluginOptions> for ModuleFederationManifestPluginOptions {
fn from(value: RawModuleFederationManifestPluginOptions) -> Self {
ModuleFederationManifestPluginOptions {
name: value.name,
global_name: value.global_name,
stats_file_name: value.stats_file_name.unwrap_or_default(),
manifest_file_name: value.manifest_file_name.unwrap_or_default(),
disable_assets_analyze: value.disable_assets_analyze.unwrap_or(false),
remote_alias_map: value
.remote_alias_map
.unwrap_or_default()
.into_iter()
.map(|(k, v)| {
(
k,
RemoteAliasTarget {
name: v.name,
entry: v.entry,
},
)
})
.collect::<HashMap<String, RemoteAliasTarget>>(),
exposes: value
.exposes
.unwrap_or_default()
.into_iter()
.map(|expose| ManifestExposeOption {
path: expose.path,
name: expose.name,
})
.collect(),
shared: value
.shared
.unwrap_or_default()
.into_iter()
.map(|shared| ManifestSharedOption {
name: shared.name,
version: shared.version,
required_version: shared.required_version,
singleton: shared.singleton,
})
.collect(),
build_info: value.build_info.map(|info| StatsBuildInfo {
build_version: info.build_version,
build_name: info.build_name,
}),
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ impl ContainerEntryModule {
enhanced,
}
}

pub fn exposes(&self) -> &[(String, ExposeOptions)] {
&self.exposes
}
}

impl Identifiable for ContainerEntryModule {
Expand Down
5 changes: 5 additions & 0 deletions crates/rspack_plugin_mf/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
mod container;
mod manifest;
mod sharing;

pub use container::{
Expand All @@ -10,6 +11,10 @@ pub use container::{
ModuleFederationRuntimePlugin, ModuleFederationRuntimePluginOptions,
},
};
pub use manifest::{
ManifestExposeOption, ManifestSharedOption, ModuleFederationManifestPlugin,
ModuleFederationManifestPluginOptions, RemoteAliasTarget, StatsBuildInfo,
};
pub use sharing::{
consume_shared_module::ConsumeSharedModule,
consume_shared_plugin::{
Expand Down
Loading
Loading