Skip to main content

Crate swc_feature_flags

Crate swc_feature_flags 

Source
Expand description

§SWC Feature Flags

A two-phase feature flag system for SWC:

  1. Build-time: Mark feature flag usage with __SWC_FLAGS__ markers
  2. 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§

build_time
config
runtime
stats

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