diff --git a/.changeset/clever-pianos-help.md b/.changeset/clever-pianos-help.md new file mode 100644 index 000000000000..93b255a0971f --- /dev/null +++ b/.changeset/clever-pianos-help.md @@ -0,0 +1,5 @@ +--- +"@rspack/binding": patch +--- + +fix regex external not working diff --git a/crates/rspack_binding_options/src/options/raw_external.rs b/crates/rspack_binding_options/src/options/raw_external.rs index bfa438d87805..d5785b8f6f24 100644 --- a/crates/rspack_binding_options/src/options/raw_external.rs +++ b/crates/rspack_binding_options/src/options/raw_external.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use napi_derive::napi; use rspack_core::ExternalItem; +use rspack_regex::RspackRegex; use serde::Deserialize; #[derive(Deserialize, Debug, Clone)] @@ -23,11 +24,14 @@ impl From for ExternalItem { .string_payload .expect("should have a string_payload when RawExternalItem.type is \"string\""), ), - "regexp" => Self::from( - value + "regexp" => { + let payload = value .regexp_payload - .expect("should have a regexp_payload when RawExternalItem.type is \"regexp\""), - ), + .expect("should have a regexp_payload when RawExternalItem.type is \"regexp\""); + let reg = + RspackRegex::new(&payload).expect("regex_payload is not a legal regex in rust side"); + Self::from(reg) + } "object" => Self::from( value .object_payload diff --git a/packages/rspack/tests/configCases/externals/array-externals/index.js b/packages/rspack/tests/configCases/externals/array-externals/index.js index c7f4fc5aaa7c..de193958bbe1 100644 --- a/packages/rspack/tests/configCases/externals/array-externals/index.js +++ b/packages/rspack/tests/configCases/externals/array-externals/index.js @@ -2,6 +2,7 @@ import "./inject"; import foo from "foo"; const bar = require("bar"); +const react = require("react"); it("should work with array type of externals", function () { expect(foo).toBe("foo"); diff --git a/packages/rspack/tests/configCases/externals/array-externals/inject.js b/packages/rspack/tests/configCases/externals/array-externals/inject.js index f8c058b12db3..f98458cd90f3 100644 --- a/packages/rspack/tests/configCases/externals/array-externals/inject.js +++ b/packages/rspack/tests/configCases/externals/array-externals/inject.js @@ -1,2 +1,3 @@ global.foo = "foo"; global.bar = "bar"; +global.react = "react"; diff --git a/packages/rspack/tests/configCases/externals/array-externals/webpack.config.js b/packages/rspack/tests/configCases/externals/array-externals/webpack.config.js index 7228d02365a7..f8bbdcf0ba0b 100644 --- a/packages/rspack/tests/configCases/externals/array-externals/webpack.config.js +++ b/packages/rspack/tests/configCases/externals/array-externals/webpack.config.js @@ -1,3 +1,3 @@ module.exports = { - externals: ["foo", "bar"] + externals: ["foo", "bar", /^re/] };