From e616982840da808d55d546136868bb9bbc707faa Mon Sep 17 00:00:00 2001 From: inottn Date: Sun, 20 Oct 2024 20:15:09 +0800 Subject: [PATCH] fix: escape node.__dirname (#8172) --- .../src/parser_plugin/node_stuff_plugin.rs | 4 +++- .../configCases/parsing/rspack-issue-8170/dir1/dir2/file.js | 1 + .../tests/configCases/parsing/rspack-issue-8170/index.js | 3 +++ .../configCases/parsing/rspack-issue-8170/rspack.config.js | 6 ++++++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/dir1/dir2/file.js create mode 100644 packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/index.js create mode 100644 packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/rspack.config.js diff --git a/crates/rspack_plugin_javascript/src/parser_plugin/node_stuff_plugin.rs b/crates/rspack_plugin_javascript/src/parser_plugin/node_stuff_plugin.rs index 9ef8aa6731c..e94f3d6d203 100644 --- a/crates/rspack_plugin_javascript/src/parser_plugin/node_stuff_plugin.rs +++ b/crates/rspack_plugin_javascript/src/parser_plugin/node_stuff_plugin.rs @@ -83,7 +83,9 @@ impl JavascriptParserPlugin for NodeStuffPlugin { .push(Box::new(ConstDependency::new( ident.span.real_lo(), ident.span.real_hi(), - format!("'{dirname}'").into(), + serde_json::to_string(&dirname) + .expect("should render dirname") + .into(), None, ))); return Some(true); diff --git a/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/dir1/dir2/file.js b/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/dir1/dir2/file.js new file mode 100644 index 00000000000..c45ea243986 --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/dir1/dir2/file.js @@ -0,0 +1 @@ +exports.dirname = __dirname; diff --git a/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/index.js b/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/index.js new file mode 100644 index 00000000000..1af51de4b90 --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/index.js @@ -0,0 +1,3 @@ +it("should define __dirname", function() { + expect(require("./dir1/dir2/file").dirname).toMatch(/^dir1[\\\/]dir2$/); +}); diff --git a/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/rspack.config.js b/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/rspack.config.js new file mode 100644 index 00000000000..8dee8fcd406 --- /dev/null +++ b/packages/rspack-test-tools/tests/configCases/parsing/rspack-issue-8170/rspack.config.js @@ -0,0 +1,6 @@ +/** @type {import("@rspack/core").Configuration} */ +module.exports = { + node: { + __dirname: true + } +};