mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
feat(transformer,minifier)!: move define and inject plugin from minifier to transformer (#6199)
This commit is contained in:
parent
51a78d5946
commit
82ab68984e
14 changed files with 32 additions and 17 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -1706,7 +1706,6 @@ dependencies = [
|
||||||
"oxc_allocator",
|
"oxc_allocator",
|
||||||
"oxc_ast",
|
"oxc_ast",
|
||||||
"oxc_codegen",
|
"oxc_codegen",
|
||||||
"oxc_diagnostics",
|
|
||||||
"oxc_mangler",
|
"oxc_mangler",
|
||||||
"oxc_parser",
|
"oxc_parser",
|
||||||
"oxc_semantic",
|
"oxc_semantic",
|
||||||
|
|
@ -1988,6 +1987,7 @@ version = "0.30.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"assert-unchecked",
|
"assert-unchecked",
|
||||||
"base64",
|
"base64",
|
||||||
|
"cow-utils",
|
||||||
"dashmap 6.0.1",
|
"dashmap 6.0.1",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"oxc-browserslist",
|
"oxc-browserslist",
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,9 @@ test = true
|
||||||
doctest = false
|
doctest = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
cow-utils = { workspace = true }
|
|
||||||
oxc_allocator = { workspace = true }
|
oxc_allocator = { workspace = true }
|
||||||
oxc_ast = { workspace = true }
|
oxc_ast = { workspace = true }
|
||||||
oxc_codegen = { workspace = true }
|
oxc_codegen = { workspace = true }
|
||||||
oxc_diagnostics = { workspace = true }
|
|
||||||
oxc_mangler = { workspace = true }
|
oxc_mangler = { workspace = true }
|
||||||
oxc_parser = { workspace = true }
|
oxc_parser = { workspace = true }
|
||||||
oxc_semantic = { workspace = true }
|
oxc_semantic = { workspace = true }
|
||||||
|
|
@ -33,12 +31,12 @@ oxc_span = { workspace = true }
|
||||||
oxc_syntax = { workspace = true }
|
oxc_syntax = { workspace = true }
|
||||||
oxc_traverse = { workspace = true }
|
oxc_traverse = { workspace = true }
|
||||||
|
|
||||||
|
cow-utils = { workspace = true }
|
||||||
num-bigint = { workspace = true }
|
num-bigint = { workspace = true }
|
||||||
num-traits = { workspace = true }
|
num-traits = { workspace = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
oxc_parser = { workspace = true }
|
oxc_parser = { workspace = true }
|
||||||
|
|
||||||
cow-utils = { workspace = true }
|
|
||||||
insta = { workspace = true }
|
insta = { workspace = true }
|
||||||
pico-args = { workspace = true }
|
pico-args = { workspace = true }
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ mod compressor;
|
||||||
mod keep_var;
|
mod keep_var;
|
||||||
mod node_util;
|
mod node_util;
|
||||||
mod options;
|
mod options;
|
||||||
mod plugins;
|
|
||||||
mod tri;
|
mod tri;
|
||||||
mod ty;
|
mod ty;
|
||||||
|
|
||||||
|
|
@ -18,9 +17,7 @@ use oxc_allocator::Allocator;
|
||||||
use oxc_ast::ast::Program;
|
use oxc_ast::ast::Program;
|
||||||
use oxc_mangler::Mangler;
|
use oxc_mangler::Mangler;
|
||||||
|
|
||||||
pub use crate::{
|
pub use crate::{ast_passes::CompressorPass, compressor::Compressor, options::CompressOptions};
|
||||||
ast_passes::CompressorPass, compressor::Compressor, options::CompressOptions, plugins::*,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub struct MinifierOptions {
|
pub struct MinifierOptions {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
mod ast_passes;
|
mod ast_passes;
|
||||||
mod mangler;
|
mod mangler;
|
||||||
mod plugins;
|
|
||||||
|
|
||||||
use oxc_allocator::Allocator;
|
use oxc_allocator::Allocator;
|
||||||
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
mod inject_global_variables;
|
|
||||||
mod replace_global_defines;
|
|
||||||
|
|
@ -24,6 +24,7 @@ doctest = false
|
||||||
oxc_allocator = { workspace = true }
|
oxc_allocator = { workspace = true }
|
||||||
oxc_ast = { workspace = true }
|
oxc_ast = { workspace = true }
|
||||||
oxc_diagnostics = { workspace = true }
|
oxc_diagnostics = { workspace = true }
|
||||||
|
oxc_parser = { workspace = true }
|
||||||
oxc_regular_expression = { workspace = true }
|
oxc_regular_expression = { workspace = true }
|
||||||
oxc_semantic = { workspace = true }
|
oxc_semantic = { workspace = true }
|
||||||
oxc_span = { workspace = true }
|
oxc_span = { workspace = true }
|
||||||
|
|
@ -32,6 +33,7 @@ oxc_traverse = { workspace = true }
|
||||||
|
|
||||||
assert-unchecked = { workspace = true }
|
assert-unchecked = { workspace = true }
|
||||||
base64 = { workspace = true }
|
base64 = { workspace = true }
|
||||||
|
cow-utils = { workspace = true }
|
||||||
dashmap = { workspace = true }
|
dashmap = { workspace = true }
|
||||||
indexmap = { workspace = true }
|
indexmap = { workspace = true }
|
||||||
oxc-browserslist = { workspace = true }
|
oxc-browserslist = { workspace = true }
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@ mod react;
|
||||||
mod regexp;
|
mod regexp;
|
||||||
mod typescript;
|
mod typescript;
|
||||||
|
|
||||||
|
mod plugins;
|
||||||
|
|
||||||
mod helpers {
|
mod helpers {
|
||||||
pub mod bindings;
|
pub mod bindings;
|
||||||
pub mod module_imports;
|
pub mod module_imports;
|
||||||
|
|
@ -52,6 +54,7 @@ pub use crate::{
|
||||||
env::{EnvOptions, Targets},
|
env::{EnvOptions, Targets},
|
||||||
es2015::{ArrowFunctionsOptions, ES2015Options},
|
es2015::{ArrowFunctionsOptions, ES2015Options},
|
||||||
options::{BabelOptions, TransformOptions},
|
options::{BabelOptions, TransformOptions},
|
||||||
|
plugins::*,
|
||||||
react::{JsxOptions, JsxRuntime, ReactRefreshOptions},
|
react::{JsxOptions, JsxRuntime, ReactRefreshOptions},
|
||||||
typescript::{RewriteExtensionsMode, TypeScriptOptions},
|
typescript::{RewriteExtensionsMode, TypeScriptOptions},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
1
crates/oxc_transformer/tests/mod.rs
Normal file
1
crates/oxc_transformer/tests/mod.rs
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
mod plugins;
|
||||||
|
|
@ -4,12 +4,12 @@
|
||||||
|
|
||||||
use oxc_allocator::Allocator;
|
use oxc_allocator::Allocator;
|
||||||
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
||||||
use oxc_minifier::{InjectGlobalVariables, InjectGlobalVariablesConfig, InjectImport};
|
|
||||||
use oxc_parser::Parser;
|
use oxc_parser::Parser;
|
||||||
use oxc_semantic::SemanticBuilder;
|
use oxc_semantic::SemanticBuilder;
|
||||||
use oxc_span::SourceType;
|
use oxc_span::SourceType;
|
||||||
|
use oxc_transformer::{InjectGlobalVariables, InjectGlobalVariablesConfig, InjectImport};
|
||||||
|
|
||||||
use crate::run;
|
use super::run;
|
||||||
|
|
||||||
pub(crate) fn test(source_text: &str, expected: &str, config: InjectGlobalVariablesConfig) {
|
pub(crate) fn test(source_text: &str, expected: &str, config: InjectGlobalVariablesConfig) {
|
||||||
let source_type = SourceType::default();
|
let source_type = SourceType::default();
|
||||||
|
|
@ -25,7 +25,7 @@ pub(crate) fn test(source_text: &str, expected: &str, config: InjectGlobalVariab
|
||||||
.with_options(CodegenOptions { single_quote: true, ..CodegenOptions::default() })
|
.with_options(CodegenOptions { single_quote: true, ..CodegenOptions::default() })
|
||||||
.build(program)
|
.build(program)
|
||||||
.source_text;
|
.source_text;
|
||||||
let expected = run(expected, source_type, None);
|
let expected = run(expected, source_type);
|
||||||
assert_eq!(result, expected, "for source {source_text}");
|
assert_eq!(result, expected, "for source {source_text}");
|
||||||
}
|
}
|
||||||
|
|
||||||
17
crates/oxc_transformer/tests/plugins/mod.rs
Normal file
17
crates/oxc_transformer/tests/plugins/mod.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
mod inject_global_variables;
|
||||||
|
mod replace_global_defines;
|
||||||
|
|
||||||
|
use oxc_allocator::Allocator;
|
||||||
|
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
||||||
|
use oxc_parser::Parser;
|
||||||
|
use oxc_span::SourceType;
|
||||||
|
|
||||||
|
fn run(source_text: &str, source_type: SourceType) -> String {
|
||||||
|
let allocator = Allocator::default();
|
||||||
|
let ret = Parser::new(&allocator, source_text, source_type).parse();
|
||||||
|
let program = allocator.alloc(ret.program);
|
||||||
|
CodeGenerator::new()
|
||||||
|
.with_options(CodegenOptions { single_quote: true, ..CodegenOptions::default() })
|
||||||
|
.build(program)
|
||||||
|
.source_text
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
use oxc_allocator::Allocator;
|
use oxc_allocator::Allocator;
|
||||||
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
use oxc_codegen::{CodeGenerator, CodegenOptions};
|
||||||
use oxc_minifier::{ReplaceGlobalDefines, ReplaceGlobalDefinesConfig};
|
|
||||||
use oxc_parser::Parser;
|
use oxc_parser::Parser;
|
||||||
use oxc_semantic::SemanticBuilder;
|
use oxc_semantic::SemanticBuilder;
|
||||||
use oxc_span::SourceType;
|
use oxc_span::SourceType;
|
||||||
|
use oxc_transformer::{ReplaceGlobalDefines, ReplaceGlobalDefinesConfig};
|
||||||
|
|
||||||
use crate::run;
|
use super::run;
|
||||||
|
|
||||||
pub(crate) fn test(source_text: &str, expected: &str, config: ReplaceGlobalDefinesConfig) {
|
pub(crate) fn test(source_text: &str, expected: &str, config: ReplaceGlobalDefinesConfig) {
|
||||||
let source_type = SourceType::default();
|
let source_type = SourceType::default();
|
||||||
|
|
@ -21,7 +21,7 @@ pub(crate) fn test(source_text: &str, expected: &str, config: ReplaceGlobalDefin
|
||||||
.with_options(CodegenOptions { single_quote: true, ..CodegenOptions::default() })
|
.with_options(CodegenOptions { single_quote: true, ..CodegenOptions::default() })
|
||||||
.build(program)
|
.build(program)
|
||||||
.source_text;
|
.source_text;
|
||||||
let expected = run(expected, source_type, None);
|
let expected = run(expected, source_type);
|
||||||
assert_eq!(result, expected, "for source {source_text}");
|
assert_eq!(result, expected, "for source {source_text}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Loading…
Reference in a new issue