diff --git a/crates/mako/src/features/node.rs b/crates/mako/src/features/node.rs index 1dc6f558c..8d8a18fe2 100644 --- a/crates/mako/src/features/node.rs +++ b/crates/mako/src/features/node.rs @@ -21,11 +21,13 @@ impl Node { config.targets = HashMap::from([("node".into(), *target)]); // ignore all built-in node modules config.ignores.push(format!( - "^(node:)?({})(/.+|$)", - Self::get_all_node_modules().join("|") + "^({})(/.+|$)", + Self::get_all_builtin_modules_besides_node_prefixed_only().join("|") + )); + config.ignores.push(format!( + "^node:({})(/.+|$)", + Self::get_all_builtin_modules().join("|") )); - // If it starts with "node:", they are all built-in node modules. - config.ignores.push("^(node:)(.+)".to_string()); // polifyll __dirname & __filename is supported with MockFilenameAndDirname Visitor } else { // polyfill __dirname & __filename for browser @@ -125,7 +127,17 @@ impl Node { .collect() } - fn get_all_node_modules() -> Vec { + fn get_node_prefixed_only_builtin_modules() -> Vec { + ["sqlite", "test"].iter().map(|s| s.to_string()).collect() + } + + fn get_all_builtin_modules() -> Vec { + let mut modules = Self::get_all_builtin_modules_besides_node_prefixed_only(); + modules.extend(Self::get_node_prefixed_only_builtin_modules()); + modules + } + + fn get_all_builtin_modules_besides_node_prefixed_only() -> Vec { let mut modules = Self::get_polyfill_modules(); modules.extend(Self::get_empty_modules()); modules diff --git a/e2e/fixtures/config.platform.node/expect.js b/e2e/fixtures/config.platform.node/expect.js index fc162fe2c..189a4c3df 100644 --- a/e2e/fixtures/config.platform.node/expect.js +++ b/e2e/fixtures/config.platform.node/expect.js @@ -35,3 +35,4 @@ assert.match( "should transform __dirname" ); assert(content.includes(`require('crypto');`), `should keep require for crypto`); +assert(content.includes(`require('node:sqlite');`), `should keep require for node:sqlite`); diff --git a/e2e/fixtures/config.platform.node/src/index.ts b/e2e/fixtures/config.platform.node/src/index.ts index 3dc54c607..790456760 100644 --- a/e2e/fixtures/config.platform.node/src/index.ts +++ b/e2e/fixtures/config.platform.node/src/index.ts @@ -17,3 +17,5 @@ try { } catch { hasCrypto = false } + +require('node:sqlite');