diff --git a/crates/node_binding/napi-binding.d.ts b/crates/node_binding/napi-binding.d.ts index b072c61cd319..051b908d785c 100644 --- a/crates/node_binding/napi-binding.d.ts +++ b/crates/node_binding/napi-binding.d.ts @@ -2339,6 +2339,11 @@ export interface RawJavascriptParserOptions { worker?: Array 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 diff --git a/crates/rspack/src/builder/mod.rs b/crates/rspack/src/builder/mod.rs index 6203d7f9efb7..b0c83c6e12de 100644 --- a/crates/rspack/src/builder/mod.rs +++ b/crates/rspack/src/builder/mod.rs @@ -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), diff --git a/crates/rspack/tests/snapshots/defaults__default_options.snap b/crates/rspack/tests/snapshots/defaults__default_options.snap index 86ca9041ff72..300eddb877b6 100644 --- a/crates/rspack/tests/snapshots/defaults__default_options.snap +++ b/crates/rspack/tests/snapshots/defaults__default_options.snap @@ -1456,6 +1456,9 @@ CompilerOptions { import_meta: Some( true, ), + require_alias: Some( + true, + ), require_as_expression: Some( true, ), diff --git a/crates/rspack_binding_api/src/raw_options/raw_module/mod.rs b/crates/rspack_binding_api/src/raw_options/raw_module/mod.rs index 48f0f8ad7f28..d5e7c27bbfae 100644 --- a/crates/rspack_binding_api/src/raw_options/raw_module/mod.rs +++ b/crates/rspack_binding_api/src/raw_options/raw_module/mod.rs @@ -290,6 +290,9 @@ pub struct RawJavascriptParserOptions { pub import_meta: Option, /// This option is experimental in Rspack only and subject to change or be removed anytime. /// @experimental + pub require_alias: Option, + /// This option is experimental in Rspack only and subject to change or be removed anytime. + /// @experimental pub require_as_expression: Option, /// This option is experimental in Rspack only and subject to change or be removed anytime. /// @experimental @@ -364,6 +367,7 @@ impl From 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, diff --git a/crates/rspack_core/src/options/module.rs b/crates/rspack_core/src/options/module.rs index 5f62ca8c68cc..3f73fbc0b707 100644 --- a/crates/rspack_core/src/options/module.rs +++ b/crates/rspack_core/src/options/module.rs @@ -301,6 +301,7 @@ pub struct JavascriptParserOptions { pub worker: Option>, pub override_strict: Option, pub import_meta: Option, + pub require_alias: Option, pub require_as_expression: Option, pub require_dynamic: Option, pub require_resolve: Option, diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/common_js_imports_parse_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/common_js_imports_parse_plugin.rs index 15e720b5ad6a..2102bb8ad4f4 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/common_js_imports_parse_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/common_js_imports_parse_plugin.rs @@ -402,9 +402,9 @@ impl CommonJsImportsParserPlugin { } impl JavascriptParserPlugin for CommonJsImportsParserPlugin { - fn can_rename(&self, _parser: &mut JavascriptParser, for_name: &str) -> Option { + fn can_rename(&self, parser: &mut JavascriptParser, for_name: &str) -> Option { if for_name == expr_name::REQUIRE { - Some(true) + Some(parser.javascript_options.require_alias.unwrap_or(true)) } else { None } diff --git a/packages/rspack/etc/core.api.md b/packages/rspack/etc/core.api.md index 1238e9baa238..bbabb4b3c281 100644 --- a/packages/rspack/etc/core.api.md +++ b/packages/rspack/etc/core.api.md @@ -3563,6 +3563,7 @@ export type JavascriptParserOptions = { strictExportPresence?: boolean; worker?: string[] | boolean; overrideStrict?: 'strict' | 'non-strict'; + requireAlias?: boolean; requireAsExpression?: boolean; requireDynamic?: boolean; requireResolve?: boolean; diff --git a/packages/rspack/src/config/adapter.ts b/packages/rspack/src/config/adapter.ts index eb4f3f08d8c7..e14a5e9516e6 100644 --- a/packages/rspack/src/config/adapter.ts +++ b/packages/rspack/src/config/adapter.ts @@ -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, diff --git a/packages/rspack/src/config/defaults.ts b/packages/rspack/src/config/defaults.ts index 64de108acf86..85788f39886a 100644 --- a/packages/rspack/src/config/defaults.ts +++ b/packages/rspack/src/config/defaults.ts @@ -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); diff --git a/packages/rspack/src/config/types.ts b/packages/rspack/src/config/types.ts index 6c7c79826ca5..6c0f7b4bf59c 100644 --- a/packages/rspack/src/config/types.ts +++ b/packages/rspack/src/config/types.ts @@ -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; diff --git a/tests/rspack-test/configCases/parsing/renaming-disabled/file.js b/tests/rspack-test/configCases/parsing/renaming-disabled/file.js new file mode 100644 index 000000000000..f74a2f2b5646 --- /dev/null +++ b/tests/rspack-test/configCases/parsing/renaming-disabled/file.js @@ -0,0 +1 @@ +module.exports = "ok"; diff --git a/tests/rspack-test/configCases/parsing/renaming-disabled/index.js b/tests/rspack-test/configCases/parsing/renaming-disabled/index.js new file mode 100644 index 000000000000..c3b4a6759f7c --- /dev/null +++ b/tests/rspack-test/configCases/parsing/renaming-disabled/index.js @@ -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};`); +}); \ No newline at end of file diff --git a/tests/rspack-test/configCases/parsing/renaming-disabled/rspack.config.js b/tests/rspack-test/configCases/parsing/renaming-disabled/rspack.config.js new file mode 100644 index 000000000000..efb7dcf661ed --- /dev/null +++ b/tests/rspack-test/configCases/parsing/renaming-disabled/rspack.config.js @@ -0,0 +1,10 @@ +module.exports = { + module: { + parser: { + javascript: { + requireAlias: false, + requireAsExpression: false + } + } + }, +}; \ No newline at end of file diff --git a/tests/rspack-test/defaultsCases/default/base.js b/tests/rspack-test/defaultsCases/default/base.js index 9072b2e54a78..7a071595afe0 100644 --- a/tests/rspack-test/defaultsCases/default/base.js +++ b/tests/rspack-test/defaultsCases/default/base.js @@ -214,6 +214,7 @@ module.exports = { importDynamic: true, importMeta: true, jsx: false, + requireAlias: true, requireAsExpression: true, requireDynamic: true, requireResolve: true, diff --git a/tests/rspack-test/defaultsCases/library/library.js b/tests/rspack-test/defaultsCases/library/library.js index e1a13f217d52..4ab4cdb61361 100644 --- a/tests/rspack-test/defaultsCases/library/library.js +++ b/tests/rspack-test/defaultsCases/library/library.js @@ -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", + `) }; diff --git a/tests/rspack-test/defaultsCases/library/name-placeholder.js b/tests/rspack-test/defaultsCases/library/name-placeholder.js index c3b41d6b2109..e93a639f7be3 100644 --- a/tests/rspack-test/defaultsCases/library/name-placeholder.js +++ b/tests/rspack-test/defaultsCases/library/name-placeholder.js @@ -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", + `) }; diff --git a/tests/rspack-test/defaultsCases/library/name-root-placeholder.js b/tests/rspack-test/defaultsCases/library/name-root-placeholder.js index 168d80446cd1..19c640435a2b 100644 --- a/tests/rspack-test/defaultsCases/library/name-root-placeholder.js +++ b/tests/rspack-test/defaultsCases/library/name-root-placeholder.js @@ -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]", + `) }; diff --git a/tests/rspack-test/defaultsCases/library/placeholder.js b/tests/rspack-test/defaultsCases/library/placeholder.js index 7864e452684f..0614dcf5508a 100644 --- a/tests/rspack-test/defaultsCases/library/placeholder.js +++ b/tests/rspack-test/defaultsCases/library/placeholder.js @@ -8,41 +8,41 @@ module.exports = { }), diff: e => e.toMatchInlineSnapshot(` - - Expected - + Received + - Expected + + Received - @@ ... @@ - - "force": true, - + "force": false, - @@ ... @@ - - "chunkLoadingGlobal": "webpackChunk_rspack_tests", - + "chunkLoadingGlobal": "webpackChunkmyLib", - @@ ... @@ - - "devtoolNamespace": "@rspack/tests", - + "devtoolNamespace": "myLib", - @@ ... @@ - - "enabledLibraryTypes": Array [], - + "enabledLibraryTypes": Array [ - + "var", - + ], - @@ ... @@ - - "hotUpdateGlobal": "webpackHotUpdate_rspack_tests", - + "hotUpdateGlobal": "webpackHotUpdatemyLib", - @@ ... @@ - - "library": undefined, - + "library": Object { - + "amdContainer": undefined, - + "auxiliaryComment": undefined, - + "export": undefined, - + "name": Array [ - + "myLib", - + "[name]", - + ], - + "type": "var", - + "umdNamedDefine": undefined, - + }, - @@ ... @@ - - "uniqueName": "@rspack/tests", - + "uniqueName": "myLib", - `) + @@ ... @@ + - "force": true, + + "force": false, + @@ ... @@ + - "chunkLoadingGlobal": "webpackChunk_rspack_tests", + + "chunkLoadingGlobal": "webpackChunkmyLib", + @@ ... @@ + - "devtoolNamespace": "@rspack/tests", + + "devtoolNamespace": "myLib", + @@ ... @@ + - "enabledLibraryTypes": Array [], + + "enabledLibraryTypes": Array [ + + "var", + + ], + @@ ... @@ + - "hotUpdateGlobal": "webpackHotUpdate_rspack_tests", + + "hotUpdateGlobal": "webpackHotUpdatemyLib", + @@ ... @@ + - "library": undefined, + + "library": Object { + + "amdContainer": undefined, + + "auxiliaryComment": undefined, + + "export": undefined, + + "name": Array [ + + "myLib", + + "[name]", + + ], + + "type": "var", + + "umdNamedDefine": undefined, + + }, + @@ ... @@ + - "uniqueName": "@rspack/tests", + + "uniqueName": "myLib", + `) }; diff --git a/tests/rspack-test/defaultsCases/library/root-placeholder.js b/tests/rspack-test/defaultsCases/library/root-placeholder.js index 9a2ca2be6836..30424ba4c7b8 100644 --- a/tests/rspack-test/defaultsCases/library/root-placeholder.js +++ b/tests/rspack-test/defaultsCases/library/root-placeholder.js @@ -13,43 +13,43 @@ module.exports = { }), diff: e => e.toMatchInlineSnapshot(` - - Expected - + Received + - Expected + + Received - @@ ... @@ - - "force": true, - + "force": false, - @@ ... @@ - - "chunkLoadingGlobal": "webpackChunk_rspack_tests", - + "chunkLoadingGlobal": "webpackChunkmyLib", - @@ ... @@ - - "devtoolNamespace": "@rspack/tests", - + "devtoolNamespace": "myLib", - @@ ... @@ - - "enabledLibraryTypes": Array [], - + "enabledLibraryTypes": Array [ - + "var", - + ], - @@ ... @@ - - "hotUpdateGlobal": "webpackHotUpdate_rspack_tests", - + "hotUpdateGlobal": "webpackHotUpdatemyLib", - @@ ... @@ - - "library": undefined, - + "library": Object { - + "amdContainer": undefined, - + "auxiliaryComment": undefined, - + "export": undefined, - + "name": Object { - + "root": Array [ - + "[name]", - + "myLib", - + ], - + }, - + "type": "var", - + "umdNamedDefine": undefined, - + }, - @@ ... @@ - - "uniqueName": "@rspack/tests", - + "uniqueName": "myLib", - `) + @@ ... @@ + - "force": true, + + "force": false, + @@ ... @@ + - "chunkLoadingGlobal": "webpackChunk_rspack_tests", + + "chunkLoadingGlobal": "webpackChunkmyLib", + @@ ... @@ + - "devtoolNamespace": "@rspack/tests", + + "devtoolNamespace": "myLib", + @@ ... @@ + - "enabledLibraryTypes": Array [], + + "enabledLibraryTypes": Array [ + + "var", + + ], + @@ ... @@ + - "hotUpdateGlobal": "webpackHotUpdate_rspack_tests", + + "hotUpdateGlobal": "webpackHotUpdatemyLib", + @@ ... @@ + - "library": undefined, + + "library": Object { + + "amdContainer": undefined, + + "auxiliaryComment": undefined, + + "export": undefined, + + "name": Object { + + "root": Array [ + + "[name]", + + "myLib", + + ], + + }, + + "type": "var", + + "umdNamedDefine": undefined, + + }, + @@ ... @@ + - "uniqueName": "@rspack/tests", + + "uniqueName": "myLib", + `) }; diff --git a/tests/rspack-test/normalCases/parsing/renaming copy/file.js b/tests/rspack-test/normalCases/parsing/renaming copy/file.js deleted file mode 100644 index 654e0c92c5f7..000000000000 --- a/tests/rspack-test/normalCases/parsing/renaming copy/file.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = "ok"; \ No newline at end of file diff --git a/tests/rspack-test/normalCases/parsing/renaming copy/index.js b/tests/rspack-test/normalCases/parsing/renaming copy/index.js deleted file mode 100644 index fea96df2523b..000000000000 --- a/tests/rspack-test/normalCases/parsing/renaming copy/index.js +++ /dev/null @@ -1,86 +0,0 @@ -it("should be able to rename require by var", function() { - var cjsRequire; // just to make it difficult - var cjsRequire = require, cjsRequire2 = typeof require !== "undefined" && require; - expect(cjsRequire("./file")).toBe("ok"); - expect(cjsRequire2("./file")).toBe("ok"); -}); - -it("should be able to rename require by assign", function() { - var cjsRequire, cjsRequire2; - (function() { - cjsRequire = require; - cjsRequire2 = typeof require === "function" && require; - expect(cjsRequire("./file")).toBe("ok"); - expect(cjsRequire2("./file")).toBe("ok"); - }()); -}); - -it("should be able to rename require by IIFE", function() { - (function(cjsRequire) { - expect(cjsRequire("./file")).toBe("ok"); - }(require)); -}); - -it("should be able to rename require by IIFE call", function() { - (function(somethingElse, cjsRequire) { - expect(cjsRequire("./file")).toBe("ok"); - expect(somethingElse).toBe(123); - }.call(this, 123, typeof require === "function" ? require : "error")); -}); - -it("should be able to rename stuff by IIFE call", function() { - (function(_exports, _exports2, _module, _module2, _define, _define2, _require, _require2) { - _define(function(R, E, M) { - expect(R("./file")).toBe("ok"); - expect(_require("./file")).toBe("ok"); - expect(_require2("./file")).toBe("ok"); - expect(E).toBe(exports); - expect(_exports).toBe(exports); - expect(_exports2).toBe(exports); - expect(M).toBe(module); - expect(_module).toBe(module); - expect(_module2).toBe(module); - }); - _define2(["./file"], function(file) { - expect(file).toBe("ok"); - }); - }).call(this, - typeof exports !== 'undefined' ? exports : null, - exports, - typeof module !== 'undefined' ? module : null, - module, - typeof define !== 'undefined' ? define : null, - define, - typeof require !== 'undefined' ? require : null, - require); -}); - -it("should accept less parameters in a IIFE call", function() { - (function(r, require) { - expect(r("./file")).toBe("ok"); - expect((typeof require)).toBe("undefined"); - }(require)); -}); - -it("should accept more parameters in a IIFE call", function() { - (function() { - }(require)); -}); - -it("should be able to rename stuff by IIFE call", function() { - (function(_exports, _module, _define, _require) { - _define(function(R, E, M) { - expect(R("./file")).toBe("ok"); - expect(_require("./file")).toBe("ok"); - expect(E).toBe(exports); - expect(_exports).toBe(exports); - expect(M).toBe(module); - expect(_module).toBe(module); - }); - }).call(this, - typeof exports !== 'undefined' ? exports : null, - typeof module !== 'undefined' ? module : null, - typeof define !== 'undefined' ? define : null, - typeof require !== 'undefined' ? require : null); -}); - diff --git a/tests/rspack-test/normalCases/parsing/renaming/index.js b/tests/rspack-test/normalCases/parsing/renaming/index.js index 39af8a4ae80c..4e4c21889e09 100644 --- a/tests/rspack-test/normalCases/parsing/renaming/index.js +++ b/tests/rspack-test/normalCases/parsing/renaming/index.js @@ -1,88 +1,86 @@ it("should be able to rename require by var", function () { var cjsRequire; // just to make it difficult - var cjsRequire = require, - cjsRequire2 = typeof require !== "undefined" && require; - expect(typeof cjsRequire).toBe("function"); - expect(typeof cjsRequire2).toBe("function"); + var cjsRequire = require, cjsRequire2 = typeof require !== "undefined" && require; expect(cjsRequire("./file")).toBe("ok"); expect(cjsRequire2("./file")).toBe("ok"); }); -// it("should be able to rename require by assign", function() { -// var cjsRequire, cjsRequire2; -// (function() { -// cjsRequire = require; -// cjsRequire2 = typeof require === "function" && require; -// expect(cjsRequire("./file")).toBe("ok"); -// expect(cjsRequire2("./file")).toBe("ok"); -// }()); -// }); +it("should be able to rename require by assign", function () { + var cjsRequire, cjsRequire2; + (function () { + cjsRequire = require; + cjsRequire2 = typeof require === "function" && require; + expect(cjsRequire("./file")).toBe("ok"); + expect(cjsRequire2("./file")).toBe("ok"); + }()); +}); + +it("should be able to rename require by IIFE", function () { + (function (cjsRequire) { + expect(cjsRequire("./file")).toBe("ok"); + }(require)); +}); -// it("should be able to rename require by IIFE", function() { -// (function(cjsRequire) { -// expect(cjsRequire("./file")).toBe("ok"); -// }(require)); -// }); +it("should be able to rename require by IIFE call", function () { + (function (somethingElse, cjsRequire) { + expect(cjsRequire("./file")).toBe("ok"); + expect(somethingElse).toBe(123); + }.call(this, 123, typeof require === "function" ? require : "error")); +}); -// it("should be able to rename require by IIFE call", function() { -// (function(somethingElse, cjsRequire) { -// expect(cjsRequire("./file")).toBe("ok"); -// expect(somethingElse).toBe(123); -// }.call(this, 123, typeof require === "function" ? require : "error")); -// }); +it("should be able to rename stuff by IIFE call", function () { + (function (_exports, _exports2, _module, _module2, _define, _define2, _require, _require2) { + _define(function (R, E, M) { + expect(R("./file")).toBe("ok"); + expect(_require("./file")).toBe("ok"); + expect(_require2("./file")).toBe("ok"); + expect(E).toBe(exports); + expect(_exports).toBe(exports); + expect(_exports2).toBe(exports); + expect(M).toBe(module); + expect(_module).toBe(module); + expect(_module2).toBe(module); + }); + _define2(["./file"], function (file) { + expect(file).toBe("ok"); + }); + }).call(this, + typeof exports !== 'undefined' ? exports : null, + exports, + typeof module !== 'undefined' ? module : null, + module, + typeof define !== 'undefined' ? define : null, + define, + typeof require !== 'undefined' ? require : null, + require); +}); -// it("should be able to rename stuff by IIFE call", function() { -// (function(_exports, _exports2, _module, _module2, _define, _define2, _require, _require2) { -// _define(function(R, E, M) { -// expect(R("./file")).toBe("ok"); -// expect(_require("./file")).toBe("ok"); -// expect(_require2("./file")).toBe("ok"); -// expect(E).toBe(exports); -// expect(_exports).toBe(exports); -// expect(_exports2).toBe(exports); -// expect(M).toBe(module); -// expect(_module).toBe(module); -// expect(_module2).toBe(module); -// }); -// _define2(["./file"], function(file) { -// expect(file).toBe("ok"); -// }); -// }).call(this, -// typeof exports !== 'undefined' ? exports : null, -// exports, -// typeof module !== 'undefined' ? module : null, -// module, -// typeof define !== 'undefined' ? define : null, -// define, -// typeof require !== 'undefined' ? require : null, -// require); -// }); +it("should accept less parameters in a IIFE call", function () { + (function (r, require) { + expect(r("./file")).toBe("ok"); + expect((typeof require)).toBe("undefined"); + }(require)); +}); -// it("should accept less parameters in a IIFE call", function() { -// (function(r, require) { -// expect(r("./file")).toBe("ok"); -// expect((typeof require)).toBe("undefined"); -// }(require)); -// }); +it("should accept more parameters in a IIFE call", function () { + (function () { + }(require)); +}); -// it("should accept more parameters in a IIFE call", function() { -// (function() { -// }(require)); -// }); +it("should be able to rename stuff by IIFE call", function () { + (function (_exports, _module, _define, _require) { + _define(function (R, E, M) { + expect(R("./file")).toBe("ok"); + expect(_require("./file")).toBe("ok"); + expect(E).toBe(exports); + expect(_exports).toBe(exports); + expect(M).toBe(module); + expect(_module).toBe(module); + }); + }).call(this, + typeof exports !== 'undefined' ? exports : null, + typeof module !== 'undefined' ? module : null, + typeof define !== 'undefined' ? define : null, + typeof require !== 'undefined' ? require : null); +}); -// it("should be able to rename stuff by IIFE call", function() { -// (function(_exports, _module, _define, _require) { -// _define(function(R, E, M) { -// expect(R("./file")).toBe("ok"); -// expect(_require("./file")).toBe("ok"); -// expect(E).toBe(exports); -// expect(_exports).toBe(exports); -// expect(M).toBe(module); -// expect(_module).toBe(module); -// }); -// }).call(this, -// typeof exports !== 'undefined' ? exports : null, -// typeof module !== 'undefined' ? module : null, -// typeof define !== 'undefined' ? define : null, -// typeof require !== 'undefined' ? require : null); -// });