Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
*/
requireRename?: 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_rename: Some(true),
require_as_expression: Some(true),
require_dynamic: Some(true),
require_resolve: Some(true),
Expand Down
3 changes: 3 additions & 0 deletions crates/rspack/tests/snapshots/defaults__default_options.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1456,6 +1456,9 @@ CompilerOptions {
import_meta: Some(
true,
),
require_rename: 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_rename: 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_rename: value.require_rename,
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_rename: 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_rename.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';
requireRename?: 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,
requireRename: parser.requireRename,
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, 'requireRename', true);
D(parserOptions, 'requireDynamic', true);
D(parserOptions, 'requireResolve', true);
D(parserOptions, 'commonjs', true);
Expand Down
3 changes: 3 additions & 0 deletions packages/rspack/src/config/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1162,6 +1162,9 @@ export type JavascriptParserOptions = {
/** Override the module to strict or non-strict. */
overrideStrict?: 'strict' | 'non-strict';

// TODO: add docs
Comment thread
LingyuCoder marked this conversation as resolved.
Outdated
requireRename?: boolean;
Comment thread
LingyuCoder marked this conversation as resolved.
Outdated

// 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 be able to rename require by var", function () {
Comment thread
LingyuCoder marked this conversation as resolved.
Outdated
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: {
requireRename: 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 @@ -216,6 +216,7 @@ module.exports = {
jsx: false,
requireAsExpression: true,
requireDynamic: true,
requireRename: true,
requireResolve: true,
strictExportPresence: false,
typeReexportsPresence: no-tolerant,
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