Skip to content

Commit 5f81896

Browse files
committed
fix: js request when using autoExtension: false along with output.filename.js
1 parent 17f7c6e commit 5f81896

File tree

3 files changed

+75
-10
lines changed

3 files changed

+75
-10
lines changed

packages/core/src/config.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -730,16 +730,24 @@ const composeAutoExtensionConfig = (
730730
autoExtension,
731731
});
732732

733-
return {
734-
config: {
735-
output: {
736-
filename: {
737-
js: `[name]${jsExtension}`,
738-
...config.output?.filename,
739-
},
733+
const updatedConfig: RsbuildConfig = {
734+
output: {
735+
filename: {
736+
js: `[name]${jsExtension}`,
737+
...config.output?.filename,
740738
},
741739
},
742-
jsExtension,
740+
};
741+
742+
const updatedJsExtension =
743+
typeof updatedConfig.output?.filename?.js === 'string' &&
744+
updatedConfig.output?.filename?.js
745+
? extname(updatedConfig.output.filename.js)
746+
: jsExtension;
747+
748+
return {
749+
config: updatedConfig,
750+
jsExtension: updatedJsExtension,
743751
dtsExtension,
744752
};
745753
};
@@ -934,6 +942,7 @@ const composeBundleConfig = (
934942
return callback();
935943
}
936944
} else {
945+
// TODO: add redirect.extension option
937946
request = `${request}${jsExtension}`;
938947
}
939948
}

tests/integration/bundle-false/index.test.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,44 @@ test('auto add js extension for relative import', async () => {
4444
const fixturePath = join(__dirname, 'js-extension');
4545
const { contents } = await buildAndGetResults({ fixturePath });
4646

47+
// basic esm
4748
for (const importer of [
4849
'import * as __WEBPACK_EXTERNAL_MODULE__bar_js__ from "./bar.js";',
4950
'import * as __WEBPACK_EXTERNAL_MODULE__baz_js__ from "./baz.js";',
5051
'import * as __WEBPACK_EXTERNAL_MODULE__foo_js__ from "./foo.js";',
5152
'import * as __WEBPACK_EXTERNAL_MODULE__qux_js__ from "./qux.js";',
5253
]) {
53-
expect(Object.values(contents.esm)[3]).toContain(importer);
54+
expect(Object.values(contents.esm0!)[3]).toContain(importer);
5455
}
5556

57+
// basic cjs
5658
for (const requirer of [
5759
'const external_bar_cjs_namespaceObject = require("./bar.cjs");',
5860
'const external_baz_cjs_namespaceObject = require("./baz.cjs");',
5961
'const external_foo_cjs_namespaceObject = require("./foo.cjs");',
6062
'const external_qux_cjs_namespaceObject = require("./qux.cjs");',
6163
]) {
62-
expect(Object.values(contents.cjs)[3]).toContain(requirer);
64+
expect(Object.values(contents.cjs0!)[3]).toContain(requirer);
65+
}
66+
67+
// using `autoExtension: false` along with `output.filename.js` - esm
68+
for (const importer of [
69+
'import * as __WEBPACK_EXTERNAL_MODULE__bar_mjs__ from "./bar.mjs";',
70+
'import * as __WEBPACK_EXTERNAL_MODULE__baz_mjs__ from "./baz.mjs";',
71+
'import * as __WEBPACK_EXTERNAL_MODULE__foo_mjs__ from "./foo.mjs";',
72+
'import * as __WEBPACK_EXTERNAL_MODULE__qux_mjs__ from "./qux.mjs";',
73+
]) {
74+
expect(Object.values(contents.esm1!)[3]).toContain(importer);
75+
}
76+
77+
// using `autoExtension: false` along with `output.filename.js` - cjs
78+
for (const requirer of [
79+
'const external_bar_cjs_namespaceObject = require("./bar.cjs");',
80+
'const external_baz_cjs_namespaceObject = require("./baz.cjs");',
81+
'const external_foo_cjs_namespaceObject = require("./foo.cjs");',
82+
'const external_qux_cjs_namespaceObject = require("./qux.cjs");',
83+
]) {
84+
expect(Object.values(contents.cjs1!)[3]).toContain(requirer);
6385
}
6486
});
6587

tests/integration/bundle-false/js-extension/rslib.config.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,43 @@ export default defineConfig({
55
lib: [
66
generateBundleEsmConfig({
77
bundle: false,
8+
output: {
9+
distPath: {
10+
root: './dist/basic-esm',
11+
},
12+
},
813
}),
914
generateBundleCjsConfig({
1015
bundle: false,
16+
output: {
17+
distPath: {
18+
root: './dist/basic-cjs',
19+
},
20+
},
21+
}),
22+
generateBundleEsmConfig({
23+
bundle: false,
24+
output: {
25+
distPath: {
26+
root: './dist/no-auto-extension-esm',
27+
},
28+
filename: {
29+
js: '[name].mjs',
30+
},
31+
},
32+
autoExtension: false,
33+
}),
34+
generateBundleCjsConfig({
35+
bundle: false,
36+
output: {
37+
distPath: {
38+
root: './dist/no-auto-extension-cjs',
39+
},
40+
filename: {
41+
js: '[name].cjs',
42+
},
43+
},
44+
autoExtension: false,
1145
}),
1246
],
1347
source: {

0 commit comments

Comments
 (0)