Skip to content

Commit eb5635c

Browse files
authored
feat: add warning when requireAlias is disabled (#12700)
1 parent df72860 commit eb5635c

File tree

9 files changed

+43
-13
lines changed

9 files changed

+43
-13
lines changed

crates/rspack_plugin_javascript/src/parser_plugin/amd/amd_plugin.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,12 @@ impl JavascriptParserPlugin for AMDParserPlugin {
184184
None
185185
}
186186

187-
fn can_rename(&self, _parser: &mut JavascriptParser, for_name: &str) -> Option<bool> {
187+
fn can_rename(
188+
&self,
189+
_parser: &mut JavascriptParser,
190+
_expr: &Expr,
191+
for_name: &str,
192+
) -> Option<bool> {
188193
if for_name == DEFINE {
189194
return Some(true);
190195
}

crates/rspack_plugin_javascript/src/parser_plugin/common_js_imports_parse_plugin.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,21 @@ impl CommonJsImportsParserPlugin {
402402
}
403403

404404
impl JavascriptParserPlugin for CommonJsImportsParserPlugin {
405-
fn can_rename(&self, parser: &mut JavascriptParser, for_name: &str) -> Option<bool> {
405+
fn can_rename(&self, parser: &mut JavascriptParser, expr: &Expr, for_name: &str) -> Option<bool> {
406406
if for_name == expr_name::REQUIRE {
407-
Some(parser.javascript_options.require_alias.unwrap_or(true))
407+
let require_alias = parser.javascript_options.require_alias.unwrap_or(true);
408+
if !require_alias {
409+
let mut warning = create_traceable_error(
410+
"Critical dependency".into(),
411+
"please enable 'module.parser.javascript.requireAlias' to analyze require alias"
412+
.to_string(),
413+
parser.source.to_owned(),
414+
expr.span().into(),
415+
);
416+
warning.severity = Severity::Warning;
417+
parser.add_warning(warning.into());
418+
}
419+
Some(require_alias)
408420
} else {
409421
None
410422
}

crates/rspack_plugin_javascript/src/parser_plugin/define_plugin/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ impl DefineParserPlugin {
5252
}
5353

5454
impl JavascriptParserPlugin for DefineParserPlugin {
55-
fn can_rename(&self, parser: &mut JavascriptParser, str: &str) -> Option<bool> {
55+
fn can_rename(&self, parser: &mut JavascriptParser, _expr: &Expr, str: &str) -> Option<bool> {
5656
if let Some(first_key) = self.walk_data.can_rename.get(str) {
5757
self.add_value_dependency(parser, str);
5858
if let Some(first_key) = first_key

crates/rspack_plugin_javascript/src/parser_plugin/drive.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,9 +579,9 @@ impl JavascriptParserPlugin for JavaScriptParserPluginDrive {
579579
None
580580
}
581581

582-
fn can_rename(&self, parser: &mut JavascriptParser, str: &str) -> Option<bool> {
582+
fn can_rename(&self, parser: &mut JavascriptParser, expr: &Expr, str: &str) -> Option<bool> {
583583
for plugin in &self.plugins {
584-
let res = plugin.can_rename(parser, str);
584+
let res = plugin.can_rename(parser, expr, str);
585585
// `SyncBailHook`
586586
if res.is_some() {
587587
return res;

crates/rspack_plugin_javascript/src/parser_plugin/provide_plugin/parser.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use cow_utils::CowUtils;
44
use itertools::Itertools;
55
use rspack_core::DependencyRange;
66
use rustc_hash::FxHashSet as HashSet;
7-
use swc_core::{atoms::Atom, common::Spanned};
7+
use swc_core::{atoms::Atom, common::Spanned, ecma::ast::Expr};
88

99
use super::{super::JavascriptParserPlugin, ProvideValue, VALUE_DEP_PREFIX};
1010
use crate::{dependency::ProvideDependency, visitors::JavascriptParser};
@@ -62,7 +62,7 @@ impl ProvideParserPlugin {
6262
}
6363

6464
impl JavascriptParserPlugin for ProvideParserPlugin {
65-
fn can_rename(&self, _parser: &mut JavascriptParser, str: &str) -> Option<bool> {
65+
fn can_rename(&self, _parser: &mut JavascriptParser, _expr: &Expr, str: &str) -> Option<bool> {
6666
self.names.contains(str).then_some(true)
6767
}
6868

crates/rspack_plugin_javascript/src/parser_plugin/trait.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub trait JavascriptParserPlugin {
3838
/// The return value will have no effect.
3939
fn top_level_for_of_await_stmt(&self, _parser: &mut JavascriptParser, _stmt: &ForOfStmt) {}
4040

41-
fn can_rename(&self, _parser: &mut JavascriptParser, _str: &str) -> Option<bool> {
41+
fn can_rename(&self, _parser: &mut JavascriptParser, _expr: &Expr, _str: &str) -> Option<bool> {
4242
None
4343
}
4444

crates/rspack_plugin_javascript/src/parser_plugin/url_plugin.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,12 @@ pub struct URLPlugin {
104104
}
105105

106106
impl JavascriptParserPlugin for URLPlugin {
107-
fn can_rename(&self, _parser: &mut JavascriptParser, for_name: &str) -> Option<bool> {
107+
fn can_rename(
108+
&self,
109+
_parser: &mut JavascriptParser,
110+
_expr: &Expr,
111+
for_name: &str,
112+
) -> Option<bool> {
108113
(for_name == "URL").then_some(true)
109114
}
110115

crates/rspack_plugin_javascript/src/visitors/dependency/parser/walk.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ impl JavascriptParser<'_> {
375375
{
376376
let drive = self.plugin_drive.clone();
377377
if drive
378-
.can_rename(self, &renamed_identifier)
378+
.can_rename(self, init, &renamed_identifier)
379379
.unwrap_or_default()
380380
{
381381
if !drive
@@ -930,7 +930,9 @@ impl JavascriptParser<'_> {
930930
if let Some(rename_identifier) = parser.get_rename_identifier(expr)
931931
&& let drive = parser.plugin_drive.clone()
932932
&& rename_identifier
933-
.call_hooks_name(parser, |this, for_name| drive.can_rename(this, for_name))
933+
.call_hooks_name(parser, |this, for_name| {
934+
drive.can_rename(this, expr, for_name)
935+
})
934936
.unwrap_or_default()
935937
&& !rename_identifier
936938
.call_hooks_name(parser, |this, for_name| drive.rename(this, expr, for_name))
@@ -1257,7 +1259,9 @@ impl JavascriptParser<'_> {
12571259
if let Some(rename_identifier) = self.get_rename_identifier(&expr.right)
12581260
&& let drive = self.plugin_drive.clone()
12591261
&& rename_identifier
1260-
.call_hooks_name(self, |this, for_name| drive.can_rename(this, for_name))
1262+
.call_hooks_name(self, |this, for_name| {
1263+
drive.can_rename(this, &expr.right, for_name)
1264+
})
12611265
.unwrap_or_default()
12621266
{
12631267
if !rename_identifier
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = [
2+
[/Critical dependency: please enable 'module.parser.javascript.requireAlias' to analyze require alias/],
3+
[/Critical dependency: please enable 'module.parser.javascript.requireAlias' to analyze require alias/]
4+
]

0 commit comments

Comments
 (0)