Skip to content

Commit a345710

Browse files
LingyuCoderchenjiahan
authored andcommitted
feat(parser): disable requireAsExpression by default
Change the default value of `requireAsExpression` from `true` to `false`. This reduces unnecessary warnings when using `require` as an expression in most common use cases.
1 parent 679f5d1 commit a345710

12 files changed

Lines changed: 35 additions & 25 deletions

File tree

crates/rspack/src/builder/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1697,7 +1697,7 @@ impl ModuleOptionsBuilder {
16971697
worker: Some(vec!["...".to_string()]),
16981698
import_meta: Some(true),
16991699
require_alias: Some(true),
1700-
require_as_expression: Some(true),
1700+
require_as_expression: Some(false),
17011701
require_dynamic: Some(true),
17021702
require_resolve: Some(true),
17031703
commonjs: Some(JavascriptParserCommonjsOptions {

crates/rspack/tests/snapshots/defaults__default_options.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1644,7 +1644,7 @@ CompilerOptions {
16441644
true,
16451645
),
16461646
require_as_expression: Some(
1647-
true,
1647+
false,
16481648
),
16491649
require_dynamic: Some(
16501650
true,

packages/rspack/src/config/defaults.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ const applyJavascriptParserOptionsDefaults = (
263263
D(parserOptions, 'wrappedContextCritical', false);
264264
D(parserOptions, 'wrappedContextRegExp', /.*/);
265265
D(parserOptions, 'strictExportPresence', false);
266-
D(parserOptions, 'requireAsExpression', true);
266+
D(parserOptions, 'requireAsExpression', false);
267267
D(parserOptions, 'requireAlias', false);
268268
D(parserOptions, 'requireDynamic', true);
269269
D(parserOptions, 'requireResolve', true);

tests/rspack-test/configCases/context-module/unknown-context-critical/rspack.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module.exports = {
66
javascript: {
77
unknownContextCritical: true,
88
requireAlias: true,
9+
requireAsExpression: true
910
}
1011
}
1112
}

tests/rspack-test/configCases/parsing/rspack-issue-10005/rspack.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = {
44
parser: {
55
javascript: {
66
requireAlias: true,
7+
requireAsExpression: true
78
},
89
}
910
},

tests/rspack-test/defaultsCases/default/base.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ module.exports = {
256256
importMeta: true,
257257
jsx: false,
258258
requireAlias: false,
259-
requireAsExpression: true,
259+
requireAsExpression: false,
260260
requireDynamic: true,
261261
requireResolve: true,
262262
strictExportPresence: false,

tests/rspack-test/diagnosticsCases/module-parse-failed/require-warning/rspack.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = {
44
parser: {
55
javascript: {
66
requireAlias: true,
7+
requireAsExpression: true
78
}
89
}
910
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/** @type {import("@rspack/core").Configuration} */
2+
module.exports = {
3+
module: {
4+
parser: {
5+
javascript: {
6+
requireAsExpression: true
7+
}
8+
}
9+
}
10+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/** @type {import("@rspack/core").Configuration} */
2+
module.exports = {
3+
module: {
4+
parser: {
5+
javascript: {
6+
requireAsExpression: true
7+
}
8+
}
9+
}
10+
};

tests/rspack-test/statsOutputCases/async-commons-chunk/__snapshots__/stats.txt

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,5 @@ chunk (runtime: main) 269.js xx bytes <{889}> ={267}= [rendered]
77
./c.js xx bytes [built] [code generated]
88
chunk (runtime: main) main.js (main) xx bytes (javascript) xx KiB (runtime) >{267}< >{269}< [entry] [rendered]
99
> ./ main
10-
dependent modules xx bytes [dependent] 1 module
11-
./index.js xx bytes [built] [code generated] [1 warning]
12-
13-
WARNING in ./index.js 9:2-8
14-
⚠ Critical dependency: require function is used in a way in which dependencies cannot be statically extracted
15-
╭─[9:4]
16-
7 │
17-
8 │ it("should load a chunk with async commons (AMD)", () => new Promise(done => {
18-
9 │ require(["./a", "./b"], (a, b) => {
19-
· ───────
20-
10 │ expect(a).toBe("a");
21-
11 │ expect(b).toBe("b");
22-
╰────
23-
24-
Rspack x.x.x compiled with 1 warning
10+
./index.js xx bytes [built] [code generated]
11+
Rspack x.x.x compiled successfully

0 commit comments

Comments
 (0)