Skip to content
Merged
Changes from all commits
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
26 changes: 10 additions & 16 deletions tests/integration/externals/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ test('auto externalize Node.js built-in modules when `output.target` is "node"',
'import fs from "fs";',
'import react from "react";',
'const __rspack_createRequire_require = __rspack_createRequire(import.meta.url);',
'module.exports = __rspack_createRequire_require("foo");',
'module.exports = __rspack_createRequire_require("bar");',
'__rspack_createRequire_require("foo");',
'__rspack_createRequire_require("bar");',
]) {
expect(entries.esm).toContain(external);
}
Expand All @@ -50,12 +50,10 @@ test('should preserve CommonJS node built-in semantics in ESM output', async ()

// Built-in modules required from bundled CommonJS should keep using createRequire.
expect(entries.esm0).toContain(
'module.exports = __rspack_createRequire_require("node:util");',
'__rspack_createRequire_require("node:util");',
);
// Another built-in on the CommonJS path should follow the same node-commonjs runtime semantics.
expect(entries.esm0).toContain(
'module.exports = __rspack_createRequire_require("stream");',
);
expect(entries.esm0).toContain('__rspack_createRequire_require("stream");');
// Lazy built-in imports should still be emitted in a runtime-safe form.
expect(entries.esm0).toContain('import("node:os")');
expect(entries.esm0).toContain('import("node:path")');
Expand Down Expand Up @@ -119,30 +117,25 @@ test('modern-module externals should handle CommonJS requests by target', async
'const __rspack_createRequire_require = __rspack_createRequire(import.meta.url);',
);

for (const request of ['react', 'e2', 'e3', 'e5', 'e6', 'e7']) {
for (const request of ['react', 'e2', 'e3', 'e5', 'e6', 'e7', 'e9', 'e10']) {
expect(nodeOutput).toContain(
`module.exports = __rspack_createRequire_require("${request}");`,
`__rspack_createRequire_require("${request}");`,
);
}

for (const request of ['e1', 'e4']) {
expect(nodeOutput).toContain(`module.exports = require("${request}");`);
expect(nodeOutput).toMatch(new RegExp(`\\brequire\\("${request}"\\)`));
}

expect(nodeOutput).toContain('import * as __rspack_external_e8 from "e8";');
expect(nodeOutput).toContain('module.exports = __rspack_external_e8;');
expect(nodeOutput).toContain('const e8 = __webpack_require__("e8");');
expect(nodeOutput).toContain('"./src/local-false.ts"');
expect(nodeOutput).toContain(
'const localFalse = __webpack_require__("./src/local-false.ts");',
);
expect(nodeOutput).not.toContain('require("./local-false")');

for (const request of ['e9', 'e10']) {
expect(nodeOutput).toContain(
`module.exports = __rspack_createRequire_require("${request}");`,
);
}

expect(nodeOutput).toContain('const e11 = await import("e11");');

expect(webOutput).not.toContain('node:module');
Expand All @@ -160,11 +153,12 @@ test('modern-module externals should handle CommonJS requests by target', async
'e9',
'e10',
]) {
expect(webOutput).toContain(`module.exports = require("${request}");`);
expect(webOutput).toMatch(new RegExp(`\\brequire\\("${request}"\\)`));
}

expect(webOutput).toContain('import * as __rspack_external_e8 from "e8";');
expect(webOutput).toContain('module.exports = __rspack_external_e8;');
expect(webOutput).toMatch(/const e8 = __webpack_require__\("[^"]+"\);/);
expect(webOutput).toContain('const e11 = await import("e11");');
});

Expand Down
Loading