Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions crates/node_binding/napi-binding.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2339,6 +2339,11 @@ export interface RawJavascriptParserOptions {
worker?: Array<string>
overrideStrict?: string
importMeta?: boolean
/**
* This option is experimental in Rspack only and subject to change or be removed anytime.
* @experimental
*/
requireAlias?: boolean
/**
* This option is experimental in Rspack only and subject to change or be removed anytime.
* @experimental
Expand Down
1 change: 1 addition & 0 deletions crates/rspack/src/builder/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1721,6 +1721,7 @@ impl ModuleOptionsBuilder {
strict_export_presence: Some(false),
worker: Some(vec!["...".to_string()]),
import_meta: Some(true),
require_alias: Some(true),
require_as_expression: Some(true),
require_dynamic: Some(true),
require_resolve: Some(true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1456,6 +1456,9 @@ CompilerOptions {
import_meta: Some(
true,
),
require_alias: Some(
true,
),
require_as_expression: Some(
true,
),
Expand Down
4 changes: 4 additions & 0 deletions crates/rspack_binding_api/src/raw_options/raw_module/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,9 @@ pub struct RawJavascriptParserOptions {
pub import_meta: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
pub require_alias: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
pub require_as_expression: Option<bool>,
/// This option is experimental in Rspack only and subject to change or be removed anytime.
/// @experimental
Expand Down Expand Up @@ -364,6 +367,7 @@ impl From<RawJavascriptParserOptions> for JavascriptParserOptions {
.override_strict
.map(|e| OverrideStrict::from(e.as_str())),
import_meta: value.import_meta,
require_alias: value.require_alias,
require_as_expression: value.require_as_expression,
require_dynamic: value.require_dynamic,
require_resolve: value.require_resolve,
Expand Down
1 change: 1 addition & 0 deletions crates/rspack_core/src/options/module.rs
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ pub struct JavascriptParserOptions {
pub worker: Option<Vec<String>>,
pub override_strict: Option<OverrideStrict>,
pub import_meta: Option<bool>,
pub require_alias: Option<bool>,
pub require_as_expression: Option<bool>,
pub require_dynamic: Option<bool>,
pub require_resolve: Option<bool>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -402,9 +402,9 @@ impl CommonJsImportsParserPlugin {
}

impl JavascriptParserPlugin for CommonJsImportsParserPlugin {
fn can_rename(&self, _parser: &mut JavascriptParser, for_name: &str) -> Option<bool> {
fn can_rename(&self, parser: &mut JavascriptParser, for_name: &str) -> Option<bool> {
if for_name == expr_name::REQUIRE {
Some(true)
Some(parser.javascript_options.require_alias.unwrap_or(true))
} else {
None
}
Expand Down
1 change: 1 addition & 0 deletions packages/rspack/etc/core.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -3563,6 +3563,7 @@ export type JavascriptParserOptions = {
strictExportPresence?: boolean;
worker?: string[] | boolean;
overrideStrict?: 'strict' | 'non-strict';
requireAlias?: boolean;
requireAsExpression?: boolean;
requireDynamic?: boolean;
requireResolve?: boolean;
Expand Down
1 change: 1 addition & 0 deletions packages/rspack/src/config/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,7 @@ function getRawJavascriptParserOptions(
: parser.worker,
overrideStrict: parser.overrideStrict,
requireAsExpression: parser.requireAsExpression,
requireAlias: parser.requireAlias,
requireDynamic: parser.requireDynamic,
requireResolve: parser.requireResolve,
commonjs: parser.commonjs,
Expand Down
1 change: 1 addition & 0 deletions packages/rspack/src/config/defaults.ts
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@ const applyJavascriptParserOptionsDefaults = (
D(parserOptions, 'wrappedContextRegExp', /.*/);
D(parserOptions, 'strictExportPresence', false);
D(parserOptions, 'requireAsExpression', true);
D(parserOptions, 'requireAlias', true);
D(parserOptions, 'requireDynamic', true);
D(parserOptions, 'requireResolve', true);
D(parserOptions, 'commonjs', true);
Expand Down
6 changes: 6 additions & 0 deletions packages/rspack/src/config/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1162,6 +1162,12 @@ export type JavascriptParserOptions = {
/** Override the module to strict or non-strict. */
overrideStrict?: 'strict' | 'non-strict';

/**
* Control whether renaming of the CommonJS `require` function will be parsed and transformed.
* @default true
*/
requireAlias?: boolean;

// TODO: add docs
requireAsExpression?: boolean;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = "ok";
26 changes: 26 additions & 0 deletions tests/rspack-test/configCases/parsing/renaming-disabled/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
var cjsRequire; // just to make it difficult
var cjsRequire = require, cjsRequire2 = typeof require !== "undefined" && require;

function test() {
cjsRequire("./file");
}

function test2() {
cjsRequire2("./file");
}

test;
test2;

it("should NOT rename require when requireAlias is false", function () {
const fs = __non_webpack_require__("fs");
const path = __non_webpack_require__("path");

const content = fs.readFileSync(path.join(__dirname, "./bundle0.js"), "utf-8");
const filename = "./file";
const requireName = "require";

expect(content).toContain(`cjsRequire("${filename}")`);
expect(content).toContain(`cjsRequire2("${filename}")`);
expect(content).toContain(`var cjsRequire = ${requireName}, cjsRequire2 = true && ${requireName};`);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
module: {
parser: {
javascript: {
requireAlias: false,
requireAsExpression: false
}
}
},
};
1 change: 1 addition & 0 deletions tests/rspack-test/defaultsCases/default/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ module.exports = {
importDynamic: true,
importMeta: true,
jsx: false,
requireAlias: true,
requireAsExpression: true,
requireDynamic: true,
requireResolve: true,
Expand Down
72 changes: 36 additions & 36 deletions tests/rspack-test/defaultsCases/library/library.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,41 @@ module.exports = {
options: () => ({ output: { library: ["myLib", "awesome"] } }),
diff: e =>
e.toMatchInlineSnapshot(`
- Expected
+ Received
- Expected
+ Received

@@ ... @@
- "force": true,
+ "force": false,
@@ ... @@
- "chunkLoadingGlobal": "webpackChunk_rspack_tests",
+ "chunkLoadingGlobal": "webpackChunkmyLib_awesome",
@@ ... @@
- "devtoolNamespace": "@rspack/tests",
+ "devtoolNamespace": "myLib.awesome",
@@ ... @@
- "enabledLibraryTypes": Array [],
+ "enabledLibraryTypes": Array [
+ "var",
+ ],
@@ ... @@
- "hotUpdateGlobal": "webpackHotUpdate_rspack_tests",
+ "hotUpdateGlobal": "webpackHotUpdatemyLib_awesome",
@@ ... @@
- "library": undefined,
+ "library": Object {
+ "amdContainer": undefined,
+ "auxiliaryComment": undefined,
+ "export": undefined,
+ "name": Array [
+ "myLib",
+ "awesome",
+ ],
+ "type": "var",
+ "umdNamedDefine": undefined,
+ },
@@ ... @@
- "uniqueName": "@rspack/tests",
+ "uniqueName": "myLib.awesome",
`)
@@ ... @@
- "force": true,
+ "force": false,
@@ ... @@
- "chunkLoadingGlobal": "webpackChunk_rspack_tests",
+ "chunkLoadingGlobal": "webpackChunkmyLib_awesome",
@@ ... @@
- "devtoolNamespace": "@rspack/tests",
+ "devtoolNamespace": "myLib.awesome",
@@ ... @@
- "enabledLibraryTypes": Array [],
+ "enabledLibraryTypes": Array [
+ "var",
+ ],
@@ ... @@
- "hotUpdateGlobal": "webpackHotUpdate_rspack_tests",
+ "hotUpdateGlobal": "webpackHotUpdatemyLib_awesome",
@@ ... @@
- "library": undefined,
+ "library": Object {
+ "amdContainer": undefined,
+ "auxiliaryComment": undefined,
+ "export": undefined,
+ "name": Array [
+ "myLib",
+ "awesome",
+ ],
+ "type": "var",
+ "umdNamedDefine": undefined,
+ },
@@ ... @@
- "uniqueName": "@rspack/tests",
+ "uniqueName": "myLib.awesome",
`)
};
74 changes: 37 additions & 37 deletions tests/rspack-test/defaultsCases/library/name-placeholder.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,42 @@ module.exports = {
}),
diff: e =>
e.toMatchInlineSnapshot(`
- Expected
+ Received
- Expected
+ Received

@@ ... @@
- "force": true,
+ "force": false,
@@ ... @@
- "chunkLoadingGlobal": "webpackChunk_rspack_tests",
+ "chunkLoadingGlobal": "webpackChunkmyLib_lib",
@@ ... @@
- "devtoolNamespace": "@rspack/tests",
+ "devtoolNamespace": "myLib.lib",
@@ ... @@
- "enabledLibraryTypes": Array [],
+ "enabledLibraryTypes": Array [
+ "var",
+ ],
@@ ... @@
- "hotUpdateGlobal": "webpackHotUpdate_rspack_tests",
+ "hotUpdateGlobal": "webpackHotUpdatemyLib_lib",
@@ ... @@
- "library": undefined,
+ "library": Object {
+ "amdContainer": undefined,
+ "auxiliaryComment": undefined,
+ "export": undefined,
+ "name": Array [
+ "my[name]Lib",
+ "[name]",
+ "lib",
+ ],
+ "type": "var",
+ "umdNamedDefine": undefined,
+ },
@@ ... @@
- "uniqueName": "@rspack/tests",
+ "uniqueName": "myLib.lib",
`)
@@ ... @@
- "force": true,
+ "force": false,
@@ ... @@
- "chunkLoadingGlobal": "webpackChunk_rspack_tests",
+ "chunkLoadingGlobal": "webpackChunkmyLib_lib",
@@ ... @@
- "devtoolNamespace": "@rspack/tests",
+ "devtoolNamespace": "myLib.lib",
@@ ... @@
- "enabledLibraryTypes": Array [],
+ "enabledLibraryTypes": Array [
+ "var",
+ ],
@@ ... @@
- "hotUpdateGlobal": "webpackHotUpdate_rspack_tests",
+ "hotUpdateGlobal": "webpackHotUpdatemyLib_lib",
@@ ... @@
- "library": undefined,
+ "library": Object {
+ "amdContainer": undefined,
+ "auxiliaryComment": undefined,
+ "export": undefined,
+ "name": Array [
+ "my[name]Lib",
+ "[name]",
+ "lib",
+ ],
+ "type": "var",
+ "umdNamedDefine": undefined,
+ },
@@ ... @@
- "uniqueName": "@rspack/tests",
+ "uniqueName": "myLib.lib",
`)
};
78 changes: 39 additions & 39 deletions tests/rspack-test/defaultsCases/library/name-root-placeholder.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,44 +13,44 @@ module.exports = {
}),
diff: e =>
e.toMatchInlineSnapshot(`
- Expected
+ Received
- Expected
+ Received

@@ ... @@
- "force": true,
+ "force": false,
@@ ... @@
- "chunkLoadingGlobal": "webpackChunk_rspack_tests",
+ "chunkLoadingGlobal": "webpackChunk_name_my_name_Lib_name_",
@@ ... @@
- "devtoolNamespace": "@rspack/tests",
+ "devtoolNamespace": "[name].my[name]Lib.[name]",
@@ ... @@
- "enabledLibraryTypes": Array [],
+ "enabledLibraryTypes": Array [
+ "var",
+ ],
@@ ... @@
- "hotUpdateGlobal": "webpackHotUpdate_rspack_tests",
+ "hotUpdateGlobal": "webpackHotUpdate_name_my_name_Lib_name_",
@@ ... @@
- "library": undefined,
+ "library": Object {
+ "amdContainer": undefined,
+ "auxiliaryComment": undefined,
+ "export": undefined,
+ "name": Object {
+ "root": Array [
+ "[\\\\name\\\\]",
+ "my[\\\\name\\\\]Lib[name]",
+ "[\\\\name\\\\]",
+ ],
+ },
+ "type": "var",
+ "umdNamedDefine": undefined,
+ },
@@ ... @@
- "uniqueName": "@rspack/tests",
+ "uniqueName": "[name].my[name]Lib.[name]",
`)
@@ ... @@
- "force": true,
+ "force": false,
@@ ... @@
- "chunkLoadingGlobal": "webpackChunk_rspack_tests",
+ "chunkLoadingGlobal": "webpackChunk_name_my_name_Lib_name_",
@@ ... @@
- "devtoolNamespace": "@rspack/tests",
+ "devtoolNamespace": "[name].my[name]Lib.[name]",
@@ ... @@
- "enabledLibraryTypes": Array [],
+ "enabledLibraryTypes": Array [
+ "var",
+ ],
@@ ... @@
- "hotUpdateGlobal": "webpackHotUpdate_rspack_tests",
+ "hotUpdateGlobal": "webpackHotUpdate_name_my_name_Lib_name_",
@@ ... @@
- "library": undefined,
+ "library": Object {
+ "amdContainer": undefined,
+ "auxiliaryComment": undefined,
+ "export": undefined,
+ "name": Object {
+ "root": Array [
+ "[\\\\name\\\\]",
+ "my[\\\\name\\\\]Lib[name]",
+ "[\\\\name\\\\]",
+ ],
+ },
+ "type": "var",
+ "umdNamedDefine": undefined,
+ },
@@ ... @@
- "uniqueName": "@rspack/tests",
+ "uniqueName": "[name].my[name]Lib.[name]",
`)
};
Loading
Loading