Expand description
§SWC Feature Flags
A two-phase feature flag system for SWC:
- Build-time: Mark feature flag usage with
__SWC_FLAGS__markers - Runtime: Substitute flag values and eliminate dead code
§Example
ⓘ
use swc_feature_flags::{build_time_pass, runtime_pass, BuildTimeConfig, RuntimeConfig};
use std::collections::HashMap;
// Build-time configuration
let mut libraries = HashMap::new();
libraries.insert(
"@their/library".to_string(),
LibraryConfig {
functions: vec!["useExperimentalFlags".to_string()],
},
);
let build_config = BuildTimeConfig {
libraries,
marker_object: "__SWC_FLAGS__".to_string(),
};
// Apply build-time pass
let program = program.apply(build_time_pass(build_config));
// Runtime configuration
let mut flag_values = HashMap::new();
flag_values.insert("featureA".to_string(), true);
flag_values.insert("featureB".to_string(), false);
let runtime_config = RuntimeConfig {
flag_values,
remove_markers: true,
collect_stats: true,
marker_object: "__SWC_FLAGS__".to_string(),
};
// Apply runtime pass
let program = program.apply(runtime_pass(runtime_config));Re-exports§
pub use build_time::BuildTimeTransform;pub use config::BuildTimeConfig;pub use config::FeatureFlagsConfig;pub use config::LibraryConfig;pub use config::RuntimeConfig;pub use config::TransformMode;pub use runtime::RuntimeTransform;pub use stats::TransformStats;
Modules§
Functions§
- build_
time_ pass - Create a build-time pass that marks feature flags with
__SWC_FLAGS__markers - feature_
flags_ pass - Create a unified feature flags pass based on the configured mode
- runtime_
pass - Create a runtime pass that substitutes flag values and eliminates dead code