Skip to main content

rspack_plugin_runtime/
lib.rs

1mod helpers;
2pub use helpers::*;
3mod common_js_chunk_format;
4pub use common_js_chunk_format::CommonJsChunkFormatPlugin;
5mod runtime_plugin;
6use rspack_core::{BoxPlugin, ChunkLoading, ChunkLoadingType, PluginExt};
7pub use runtime_plugin::RuntimePlugin;
8mod array_push_callback_chunk_format;
9pub use array_push_callback_chunk_format::ArrayPushCallbackChunkFormatPlugin;
10mod common_js_chunk_loading;
11pub use common_js_chunk_loading::CommonJsChunkLoadingPlugin;
12mod jsonp_chunk_loading;
13pub use jsonp_chunk_loading::JsonpChunkLoadingPlugin;
14mod module_chunk_format;
15pub use module_chunk_format::ModuleChunkFormatPlugin;
16mod module_chunk_loading;
17pub use module_chunk_loading::ModuleChunkLoadingPlugin;
18mod import_scripts_chunk_loading;
19pub use import_scripts_chunk_loading::ImportScriptsChunkLoadingPlugin;
20mod runtime_module;
21pub use runtime_module::{
22  EXPORT_REQUIRE_RUNTIME_MODULE_ID, GetChunkFilenameRuntimeModule, chunk_has_css,
23  is_enabled_for_chunk, stringify_chunks,
24};
25mod startup_chunk_dependencies;
26pub use startup_chunk_dependencies::StartupChunkDependenciesPlugin;
27mod chunk_prefetch_preload;
28pub use chunk_prefetch_preload::ChunkPrefetchPreloadPlugin;
29mod bundler_info;
30pub use bundler_info::{BundlerInfoForceMode, BundlerInfoPlugin};
31mod runtime_module_from_js;
32pub use runtime_module_from_js::RuntimeModuleFromJs;
33mod drive;
34pub use drive::*;
35
36pub fn enable_chunk_loading_plugin(loading_type: ChunkLoadingType, plugins: &mut Vec<BoxPlugin>) {
37  match loading_type {
38    ChunkLoadingType::Jsonp => {
39      plugins.push(
40        StartupChunkDependenciesPlugin::new(ChunkLoading::Enable(ChunkLoadingType::Jsonp), true)
41          .boxed(),
42      );
43      plugins.push(JsonpChunkLoadingPlugin::default().boxed());
44    }
45    ChunkLoadingType::Require => {
46      plugins.push(
47        StartupChunkDependenciesPlugin::new(ChunkLoading::Enable(ChunkLoadingType::Require), false)
48          .boxed(),
49      );
50      plugins.push(CommonJsChunkLoadingPlugin::new(false).boxed())
51    }
52    ChunkLoadingType::AsyncNode => {
53      plugins.push(
54        StartupChunkDependenciesPlugin::new(
55          ChunkLoading::Enable(ChunkLoadingType::AsyncNode),
56          true,
57        )
58        .boxed(),
59      );
60      plugins.push(CommonJsChunkLoadingPlugin::new(true).boxed())
61    }
62    ChunkLoadingType::ImportScripts => {
63      plugins.push(
64        StartupChunkDependenciesPlugin::new(
65          ChunkLoading::Enable(ChunkLoadingType::ImportScripts),
66          true,
67        )
68        .boxed(),
69      );
70      plugins.push(ImportScriptsChunkLoadingPlugin::default().boxed());
71    }
72    ChunkLoadingType::Import => {
73      plugins.push(
74        StartupChunkDependenciesPlugin::new(ChunkLoading::Enable(ChunkLoadingType::Import), true)
75          .boxed(),
76      );
77      plugins.push(ModuleChunkLoadingPlugin::default().boxed())
78    }
79    ChunkLoadingType::Custom(_) => (),
80  }
81}