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  GetChunkFilenameRuntimeModule, chunk_has_css, chunk_has_js, is_enabled_for_chunk,
23  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(JsonpChunkLoadingPlugin::default().boxed());
40    }
41    ChunkLoadingType::Require => {
42      plugins.push(
43        StartupChunkDependenciesPlugin::new(ChunkLoading::Enable(ChunkLoadingType::Require), false)
44          .boxed(),
45      );
46      plugins.push(CommonJsChunkLoadingPlugin::new(false).boxed())
47    }
48    ChunkLoadingType::AsyncNode => {
49      plugins.push(
50        StartupChunkDependenciesPlugin::new(
51          ChunkLoading::Enable(ChunkLoadingType::AsyncNode),
52          true,
53        )
54        .boxed(),
55      );
56      plugins.push(CommonJsChunkLoadingPlugin::new(true).boxed())
57    }
58    ChunkLoadingType::ImportScripts => {
59      plugins.push(
60        StartupChunkDependenciesPlugin::new(
61          ChunkLoading::Enable(ChunkLoadingType::ImportScripts),
62          true,
63        )
64        .boxed(),
65      );
66      plugins.push(ImportScriptsChunkLoadingPlugin::default().boxed());
67    }
68    ChunkLoadingType::Import => plugins.push(ModuleChunkLoadingPlugin::default().boxed()),
69    ChunkLoadingType::Custom(_) => (),
70  }
71}