Cargo Features

swc_core has no features set by default.

[dependencies]
swc_core = { version = "9.0.2", features = ["scoped-alloc", "common_ahash", "transform_common", "ecma_loader_lru", "ecma_loader_parking_lot", "ecma_minifier_concurrent", "bundler_concurrent", "allocator_node", "base", "base_concurrent", "base_node", "common", "common_sourcemap", "common_concurrent", "common_tty", "ecma_visit", "ecma_visit_path", "ecma_quote", "ecma_utils", "ecma_lints", "ecma_transforms", "ecma_transforms_compat", "ecma_transforms_module", "ecma_transforms_optimization", "ecma_transforms_proposal", "ecma_transforms_react", "ecma_transforms_typescript", "bundler", "bundler_node_v1", "bundler_node_v2", "ecma_loader", "ecma_loader_node", "ecma_loader_tsc", "testing_transform", "ecma_ast", "ecma_ast_serde", "ecma_parser", "ecma_parser_typescript", "cached", "ecma_codegen", "ecma_minifier", "ecma_preset_env", "ecma_usage_analyzer", "css_ast", "css_ast_serde", "css_codegen", "css_compat", "css_minifier", "css_modules", "css_parser", "css_prefixer", "css_utils", "css_visit", "css_visit_path", "testing", "trace_macro", "binding_macro_native", "binding_macro_wasm", "common_plugin_transform", "css_plugin_transform", "ecma_plugin_transform", "stacker", "typescript", "plugin_transform_host_js", "plugin_transform_host_native", "plugin_transform_host_native_filesystem_cache", "plugin_transform_host_native_shared_runtime", "swc_transform_common"] }
scoped-alloc

Public features
Users should opt in necessary features explicitly

Flags to opt into certain optimizations. In most cases this won't expose new interfaces,
but changes internal logics to perform differently. These flag should be turned on in combination with actual features. Refer build.rs for more details.

Enables scoped of swc_allocator

TODO: eventually swc_plugin_runner needs to remove default features

common_ahash

swc_common/ahash

Enables ahash of swc_common

transform_common

Affects swc_core::transform_common

ecma_loader_lru

swc_ecma_loader/cache*

Enables lru of swc_ecma_loader

ecma_loader_parking_lot

Enables parking_lot of swc_ecma_loader

ecma_minifier_concurrent

swc_ecma_minifier/concurrent

Enables concurrent of swc_ecma_minifier

bundler_concurrent

swc_bundler/concurrent

Enables concurrent of swc_bundler

allocator_node = swc_malloc

configures specific memory allocator.
node.js binding should depend on this.

base = __base

General
Enable swc reexports. To avoid confusion between swc_core namespace,
it is named as 'base' instead.

base_concurrent = __base

Enables concurrent of swc

swc:

TODO: This may need reorganization with swc_core - swc_core allows to optionally enable each features (minifier, transforms..) but swc includes all of them.

base_node = __base, swc_nodejs_common

Enables n-api related features.

Enables node of swc

Affects swc_core::node

common __binding_macros? = __common

Enable swc_common reexports.

In most cases, top-level features (i.e plugin, or plugin_host) will include this, so no need to explicitly opt in. However, if top-level feature should be controlled by feature as opt-in and some other dependent feature need this, can be manually selected.
refer binding_core_wasm for example: it has plugin_transform_host feature, but it has to be a feature to be enabled by compile time flag to avoid cargo's feature collision,
while it also need to access 'common' exports by default for cargo check / or clippy.

common_sourcemap = __common

Enables sourcemap of swc_common

common_concurrent = __common

TODO: internally concurrent / perf refers to the same feature (parking_lot)

  • can we consolidate them?

Enables concurrent of swc_common

common_tty = __common

Enables tty-emitter of swc_common

ecma_visit __common_plugin_transform? __ecma_plugin_transform? = __visit

Enable swc_ecma_visit

ecma_visit_path = __visit

Enables path of swc_ecma_visit

ecma_quote = __common, ecma_ast, swc_ecma_quote_macros

Enable quote! macro support.

Affects swc_core::quote

ecma_utils = __common, __utils

Enable swc_ecma_utils

ecma_lints = __common, swc_ecma_lints

Affects swc_core::ecma.lints

ecma_transforms = __ecma_transforms

Enable swc_ecma_transforms base features

ecma_transforms_compat = __ecma_transforms, swc_ecma_transforms_compat

Affects swc_core::transforms.compat

ecma_transforms_module = __ecma_transforms, swc_ecma_transforms_module

Affects swc_core::transforms.module

ecma_transforms_optimization = __ecma_transforms, swc_ecma_transforms_optimization

Affects swc_core::transforms.optimization

ecma_transforms_proposal = __ecma_transforms, swc_ecma_transforms_proposal

Affects swc_core::transforms.proposal

ecma_transforms_react = __ecma_transforms, swc_ecma_transforms_react

Affects swc_core::transforms.react

ecma_transforms_typescript = __ecma_transforms, swc_ecma_transforms_typescript

Affects swc_core::transforms.typescript

bundler = __bundler

Enable swc_bundler

bundler_node_v1 = __bundler

Enables swc_v1 of swc_node_bundler

Affects swc_core::bundler.node

bundler_node_v2 = __bundler

Enables swc_v2 of swc_node_bundler

Affects swc_core::bundler.node

ecma_loader = __ecma_loader

Enable swc_ecma_loader

ecma_loader_node = __ecma_loader

Enables node of swc_ecma_loader

swc_ecma_loader:

Enable node js resolver

ecma_loader_tsc = __ecma_loader

Enables tsc of swc_ecma_loader

swc_ecma_loader:

Enable support for paths of tsconfig.json

testing_transform = __ecma, __testing_transform

Enable swc_ecma_transforms_testing

ecma_ast __binding_macros? __ecma_plugin_transform? ecma_ast_serde? ecma_quote? = __ecma, swc_atoms, swc_ecma_ast

Enable swc_ecma_ast / swc_atoms support.
TODO: currently both are enabled at once, we may want to separate them.

Affects swc_core::ecma.ast, swc_core::ecma.atoms

ecma_ast_serde = ecma_ast

Enables serde-impl of swc_ecma_ast, serde of swc_ecma_visit

ecma_parser = __parser

Enable swc_ecma_parser support.

ecma_parser_typescript = __parser

Enables typescript of swc_ecma_parser

cached = __cached

Enable swc_cached support

ecma_codegen = __ecma, swc_ecma_codegen

Enable swc_ecma_codegen

Affects swc_core::ecma.codegen

ecma_minifier = __ecma, swc_ecma_minifier

Enable swc_ecma_minifier

Affects swc_core::ecma.minifier

ecma_preset_env = __ecma, swc_ecma_preset_env

Enable swc_ecma_preset_env

Affects swc_core::ecma.preset_env

ecma_usage_analyzer = __ecma, swc_ecma_usage_analyzer

Enable swc_ecma_usage_analyzer

Affects swc_core::ecma.usage_analyzer

css_ast __css_plugin_transform? css_ast_serde? = __css, swc_css_ast

Enable swc_css

Affects swc_core::css.ast

css_ast_serde = css_ast

Enables serde-impl of swc_css_ast

css_codegen = __css, swc_css_codegen

Affects swc_core::css.codegen

css_compat = __css, swc_css_compat

Affects swc_core::css.compat

css_minifier = __css, swc_css_minifier

Affects swc_core::css.minifier

css_modules = __css, swc_css_modules

Affects swc_core::css.modules

css_parser = __css, swc_css_parser

Affects swc_core::css.parser

css_prefixer = __css, swc_css_prefixer

Affects swc_core::css.prefixer

css_utils = __css, swc_css_utils

Affects swc_core::css.utils

css_visit __css_plugin_transform? = __css, swc_css_visit

Affects swc_core::css.visit

css_visit_path = __css

Enables path of swc_css_visit

testing

Utilities for testing.

Enables testing

Affects swc_core::testing

trace_macro = swc_trace_macro

Enable trace macro support. TODO: Once all top-level package (node, wasm, cli..) imports swc_core, we may encapsulate tracing package into swc_core.

Affects swc_core::trace_macro

binding_macro_native = __binding_macros

Enables binding_native of binding_macros

swc_* dependencies

binding_macro_wasm = __binding_macros

Enables binding_wasm of binding_macros

common_plugin_transform css_plugin_transform? ecma_plugin_transform? = __common_plugin_transform, __testing_transform

Plugins
Top level features should be enabled to write plugins for the custom transform.

Enables plugin_transform_schema_v1 of swc_common

css_plugin_transform = __css_plugin_transform, common_plugin_transform
ecma_plugin_transform = __ecma_plugin_transform, common_plugin_transform
stacker

Use stacker to avoid stack overflow.

Enables stacker of swc_ecma_parser and swc_ecma_utils

typescript = swc_typescript

Affects swc_core::typescript

plugin_transform_host_js = __plugin_transform_host

Host features to enable plugin runner runtime. native feature is for the host environment does not have, or cannot access to the wasm runtime (i.e cli, or @swc/core node bindings). js feature is for the environment can access wasm runtime (i.e @swc/wasm)

Enables plugin_transform_host_js and plugin_transform_schema_v1 of swc, plugin_transform_schema_v1 of swc_common, plugin_transform_host_js and plugin_transform_schema_v1 of swc_plugin_runner

plugin_transform_host_native = __plugin_transform_host

Enables plugin_transform_host_native and plugin_transform_schema_v1 of swc, plugin_transform_schema_v1 of swc_common, plugin_transform_host_native and plugin_transform_schema_v1 of swc_plugin_runner

plugin_transform_host_native_filesystem_cache

Enables FileSystemCache support for the plugin runner.

Enables filesystem_cache of swc_plugin_runner

plugin_transform_host_native_shared_runtime

Enables plugin_transform…shared_runtime of swc_plugin_runner

__common_plugin_transform __css_plugin_transform? __ecma_plugin_transform? common_plugin_transform? = __common, ecma_visit, once_cell, swc_plugin, swc_plugin_macro

Plugins

Internal flags for any transform plugin feature

Enables rkyv-impl of swc_atoms

Affects plugin::memory, swc_core::plugin, plugin::proxies, plugin::errors, plugin::metadata

__css_plugin_transform css_plugin_transform? = __common_plugin_transform, css_ast, css_visit

Enables plugin-mode of swc_common, rkyv-impl of swc_css_ast, plugin-mode of swc_plugin_proxy

Affects plugin::errors, plugin::metadata

__ecma_plugin_transform ecma_plugin_transform? = __common_plugin_transform, ecma_ast, ecma_visit

Enables plugin-mode of swc_common, rkyv-impl of swc_ecma_ast and plugin-mode of swc_plugin_proxy

swc_plugin_proxy:

swc/core, which runs plugin

Affects plugin::errors, plugin::metadata

__plugin_transform_host plugin_transform_host_js? plugin_transform_host_native? = __common

Internal flags for any transform plugin host feature

Enables plugin of swc, rkyv-impl of swc_atoms, plugin-rt of swc_common, rkyv-impl of swc_ecma_ast, plugin-rt of swc_plugin_proxy, rkyv-impl of swc_plugin_runner

Affects swc_core::plugin_runner, swc_core::plugin, plugin::proxies

__base __binding_macros? base? base_concurrent? base_node? = swc

Common

Affects swc_core::base

__utils ecma_utils? = __ecma, swc_ecma_utils

Affects swc_core::ecma.utils

__cached cached? = swc_cached

Affects swc_core::cached

__binding_macros binding_macro_native? binding_macro_wasm? = __base, __ecma, __ecma_transforms, binding_macros, common, ecma_ast

Affects swc_core::binding_macros

__parser ecma_parser? ecma_parser_typescript? = __ecma, swc_ecma_parser

Affects swc_core::ecma.parser

__testing_transform common_plugin_transform? testing_transform? = __ecma, swc_ecma_transforms_testing

Affects swc_core::transforms.testing, swc_core::ecma.transforms

__visit ecma_visit? ecma_visit_path? = __ecma, swc_ecma_visit

Affects swc_core::ecma.visit

__ecma_loader ecma_loader? ecma_loader_node? ecma_loader_tsc? = __ecma, swc_ecma_loader

Affects swc_core::ecma.loader

__bundler bundler? bundler_node_v1? bundler_node_v2? = swc_bundler

Affects swc_core::bundler

__ecma_transforms __binding_macros? ecma_transforms? ecma_transforms_compat? ecma_transforms_module? ecma_transforms_optimization? ecma_transforms_proposal? ecma_transforms_react? ecma_transforms_typescript? = __ecma

Affects swc_core::ecma.transforms

__common __common_plugin_transform? __plugin_transform_host? common? common_concurrent? common_sourcemap? common_tty? ecma_lints? ecma_quote? ecma_utils? = swc_common

Affects swc_core::common

__css css_ast? css_codegen? css_compat? css_minifier? css_modules? css_parser? css_prefixer? css_utils? css_visit? css_visit_path?

Affects swc_core::css

__ecma __binding_macros? __ecma_loader? __ecma_transforms? __parser? __testing_transform? __utils? __visit? ecma_ast? ecma_codegen? ecma_minifier? ecma_preset_env? ecma_usage_analyzer? testing_transform? = swc_ecma_transforms_base

Affects swc_core::ecma

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

once_cell __common_plugin_transform?

Enables once_cell

3rd party dependencies

binding_macros __binding_macros? binding_macro_native? binding_macro_wasm?
swc __base? __plugin_transform_host? base_concurrent? base_node? plugin_transform_host_js? plugin_transform_host_native?
swc_atoms __common_plugin_transform? __plugin_transform_host? ecma_ast?
swc_bundler __bundler? bundler_concurrent?
swc_cached __cached?
swc_common __common? __css_plugin_transform? __ecma_plugin_transform? __plugin_transform_host? common_ahash? common_concurrent? common_plugin_transform? common_sourcemap? common_tty? plugin_transform_host_js? plugin_transform_host_native?
swc_css_ast __css_plugin_transform? css_ast? css_ast_serde?
swc_css_codegen css_codegen?
swc_css_compat css_compat?
swc_css_minifier css_minifier?
swc_css_modules css_modules?
swc_css_parser css_parser?
swc_css_prefixer css_prefixer?
swc_css_utils css_utils?
swc_css_visit css_visit? css_visit_path?
swc_ecma_ast __ecma_plugin_transform? __plugin_transform_host? ecma_ast? ecma_ast_serde?
swc_ecma_codegen ecma_codegen?
swc_ecma_lints ecma_lints?
swc_ecma_loader __ecma_loader? ecma_loader_lru? ecma_loader_node? ecma_loader_parking_lot? ecma_loader_tsc?
swc_ecma_minifier ecma_minifier? ecma_minifier_concurrent?
swc_ecma_parser __parser? ecma_parser_typescript? stacker?
swc_ecma_preset_env ecma_preset_env?
swc_ecma_quote_macros ecma_quote?
swc_ecma_transforms_base __ecma?
swc_ecma_transforms_compat ecma_transforms_compat?
swc_ecma_transforms_module ecma_transforms_module?
swc_ecma_transforms_optimization ecma_transforms_optimization?
swc_ecma_transforms_proposal ecma_transforms_proposal?
swc_ecma_transforms_react ecma_transforms_react?
swc_ecma_transforms_testing __testing_transform?
swc_ecma_transforms_typescript ecma_transforms_typescript?
swc_ecma_usage_analyzer ecma_usage_analyzer?
swc_ecma_utils __utils? stacker?
swc_ecma_visit __visit? ecma_ast_serde? ecma_visit_path?
swc_malloc allocator_node?
swc_node_bundler bundler_node_v1? bundler_node_v2?
swc_nodejs_common base_node?
swc_plugin __common_plugin_transform?
swc_plugin_macro __common_plugin_transform?
swc_plugin_proxy __css_plugin_transform? __ecma_plugin_transform? __plugin_transform_host?
swc_trace_macro trace_macro?
swc_transform_common implicit feature

Enables swc_transform_common

swc_transform_common:

Common utilities for swc transforms for any language

swc_typescript typescript?
swc_plugin_runner __plugin_transform_host? plugin_transform_host_js? plugin_transform_host_native? plugin_transform…filesystem_cache? plugin_transform…shared_runtime?