diff --git a/crates/oxc_transformer/src/plugins/replace_global_defines.rs b/crates/oxc_transformer/src/plugins/replace_global_defines.rs index d647bbdc6645c4..6f3293f8acd4fc 100644 --- a/crates/oxc_transformer/src/plugins/replace_global_defines.rs +++ b/crates/oxc_transformer/src/plugins/replace_global_defines.rs @@ -538,7 +538,7 @@ impl<'a> ReplaceGlobalDefines<'a> { }; } - true + current_part_member_expression.is_none() } } diff --git a/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs b/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs index f57edd9678247c..f7ddd2c7830887 100644 --- a/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs +++ b/crates/oxc_transformer/tests/integrations/plugins/replace_global_defines.rs @@ -71,6 +71,20 @@ fn dot_with_overlap() { test("import.meta.env.NODE_ENV", "import.meta.env.NODE_ENV", config.clone()); } +#[test] +fn dot_define_is_member_expr_postfix() { + let config = ReplaceGlobalDefinesConfig::new(&[ + ("__OBJ__", r#"{"process":{"env":{"SOMEVAR":"foo"}}}"#), + ("process.env.SOMEVAR", "\"SOMEVAR\""), + ]) + .unwrap(); + test( + "console.log(__OBJ__.process.env.SOMEVAR)", + "console.log({ 'process': { 'env': { 'SOMEVAR': 'foo' } } }.process.env.SOMEVAR);\n", + config.clone(), + ); +} + #[test] fn dot_nested() { let config = ReplaceGlobalDefinesConfig::new(&[("process", "production")]).unwrap();