@@ -21,6 +21,7 @@ use crate::{
21
21
visitors:: {
22
22
JavascriptParser , context_reg_exp, create_context_dependency, create_traceable_error, expr_name,
23
23
} ,
24
+ webpack_comment:: try_extract_webpack_magic_comment,
24
25
} ;
25
26
26
27
fn create_commonjs_require_context_dependency (
@@ -126,11 +127,38 @@ impl CallOrNewExpr<'_> {
126
127
pub struct CommonJsImportsParserPlugin ;
127
128
128
129
impl CommonJsImportsParserPlugin {
130
+ fn has_webpack_ignore_comment (
131
+ parser : & mut JavascriptParser ,
132
+ error_span : Span ,
133
+ span : Span ,
134
+ ) -> bool {
135
+ if !parser
136
+ . javascript_options
137
+ . commonjs_magic_comments
138
+ . unwrap_or ( false )
139
+ {
140
+ return false ;
141
+ }
142
+
143
+ try_extract_webpack_magic_comment ( parser, error_span, span)
144
+ . get_webpack_ignore ( )
145
+ . unwrap_or_default ( )
146
+ }
147
+
129
148
fn process_resolve ( & self , parser : & mut JavascriptParser , call_expr : & CallExpr , weak : bool ) {
130
149
if call_expr. args . len ( ) != 1 {
131
150
return ;
132
151
}
133
152
153
+ if let ExprOrSpread {
154
+ spread : None ,
155
+ expr : argument_expr,
156
+ } = & call_expr. args [ 0 ]
157
+ && Self :: has_webpack_ignore_comment ( parser, call_expr. span , argument_expr. span ( ) )
158
+ {
159
+ return ;
160
+ }
161
+
134
162
let argument_expr = & call_expr. args [ 0 ] . expr ;
135
163
let param = parser. evaluate_expression ( argument_expr) ;
136
164
let require_resolve_header_dependency = Box :: new ( RequireResolveHeaderDependency :: new (
@@ -196,6 +224,14 @@ impl CommonJsImportsParserPlugin {
196
224
return None ;
197
225
}
198
226
let arg = & call_expr. args [ 0 ] ;
227
+ if let ExprOrSpread {
228
+ spread : None ,
229
+ expr : argument_expr,
230
+ } = arg
231
+ && Self :: has_webpack_ignore_comment ( parser, call_expr. span , argument_expr. span ( ) )
232
+ {
233
+ return None ;
234
+ }
199
235
let param = parser. evaluate_expression ( & arg. expr ) ;
200
236
param. is_string ( ) . then ( || {
201
237
CommonJsFullRequireDependency :: new (
@@ -252,8 +288,16 @@ impl CommonJsImportsParserPlugin {
252
288
return None ;
253
289
}
254
290
255
- let argument_expr = & args[ 0 ] . expr ;
256
- let param = parser. evaluate_expression ( argument_expr) ;
291
+ if let ExprOrSpread {
292
+ spread : None ,
293
+ expr : argument_expr,
294
+ } = & args[ 0 ]
295
+ && Self :: has_webpack_ignore_comment ( parser, expr. span ( ) , argument_expr. span ( ) )
296
+ {
297
+ return Some ( true ) ;
298
+ }
299
+
300
+ let param = parser. evaluate_expression ( & args[ 0 ] . expr ) ;
257
301
if param. is_conditional ( ) {
258
302
let mut is_expression = false ;
259
303
for p in param. options ( ) {
0 commit comments