Skip to content
Merged
Show file tree
Hide file tree
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
25 changes: 17 additions & 8 deletions packages/core/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -730,16 +730,24 @@ const composeAutoExtensionConfig = (
autoExtension,
});

return {
config: {
output: {
filename: {
js: `[name]${jsExtension}`,
...config.output?.filename,
},
const updatedConfig: RsbuildConfig = {
output: {
filename: {
js: `[name]${jsExtension}`,
...config.output?.filename,
},
},
jsExtension,
};

const updatedJsExtension =
typeof updatedConfig.output?.filename?.js === 'string' &&
updatedConfig.output?.filename?.js
? extname(updatedConfig.output.filename.js)
: jsExtension;

return {
config: updatedConfig,
jsExtension: updatedJsExtension,
dtsExtension,
};
};
Expand Down Expand Up @@ -934,6 +942,7 @@ const composeBundleConfig = (
return callback();
}
} else {
// TODO: add redirect.extension option
request = `${request}${jsExtension}`;
}
}
Expand Down
26 changes: 24 additions & 2 deletions tests/integration/bundle-false/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,22 +44,44 @@ test('auto add js extension for relative import', async () => {
const fixturePath = join(__dirname, 'js-extension');
const { contents } = await buildAndGetResults({ fixturePath });

// basic esm
for (const importer of [
'import * as __WEBPACK_EXTERNAL_MODULE__bar_js__ from "./bar.js";',
'import * as __WEBPACK_EXTERNAL_MODULE__baz_js__ from "./baz.js";',
'import * as __WEBPACK_EXTERNAL_MODULE__foo_js__ from "./foo.js";',
'import * as __WEBPACK_EXTERNAL_MODULE__qux_js__ from "./qux.js";',
]) {
expect(Object.values(contents.esm)[3]).toContain(importer);
expect(Object.values(contents.esm0!)[3]).toContain(importer);
}

// basic cjs
for (const requirer of [
'const external_bar_cjs_namespaceObject = require("./bar.cjs");',
'const external_baz_cjs_namespaceObject = require("./baz.cjs");',
'const external_foo_cjs_namespaceObject = require("./foo.cjs");',
'const external_qux_cjs_namespaceObject = require("./qux.cjs");',
]) {
expect(Object.values(contents.cjs)[3]).toContain(requirer);
expect(Object.values(contents.cjs0!)[3]).toContain(requirer);
}

// using `autoExtension: false` along with `output.filename.js` - esm
for (const importer of [
'import * as __WEBPACK_EXTERNAL_MODULE__bar_mjs__ from "./bar.mjs";',
'import * as __WEBPACK_EXTERNAL_MODULE__baz_mjs__ from "./baz.mjs";',
'import * as __WEBPACK_EXTERNAL_MODULE__foo_mjs__ from "./foo.mjs";',
'import * as __WEBPACK_EXTERNAL_MODULE__qux_mjs__ from "./qux.mjs";',
]) {
expect(Object.values(contents.esm1!)[3]).toContain(importer);
}

// using `autoExtension: false` along with `output.filename.js` - cjs
for (const requirer of [
'const external_bar_cjs_namespaceObject = require("./bar.cjs");',
'const external_baz_cjs_namespaceObject = require("./baz.cjs");',
'const external_foo_cjs_namespaceObject = require("./foo.cjs");',
'const external_qux_cjs_namespaceObject = require("./qux.cjs");',
]) {
expect(Object.values(contents.cjs1!)[3]).toContain(requirer);
}
});

Expand Down
34 changes: 34 additions & 0 deletions tests/integration/bundle-false/js-extension/rslib.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,43 @@ export default defineConfig({
lib: [
generateBundleEsmConfig({
bundle: false,
output: {
distPath: {
root: './dist/basic-esm',
},
},
}),
generateBundleCjsConfig({
bundle: false,
output: {
distPath: {
root: './dist/basic-cjs',
},
},
}),
generateBundleEsmConfig({
bundle: false,
output: {
distPath: {
root: './dist/no-auto-extension-esm',
},
filename: {
js: '[name].mjs',
},
},
autoExtension: false,
}),
generateBundleCjsConfig({
bundle: false,
output: {
distPath: {
root: './dist/no-auto-extension-cjs',
},
filename: {
js: '[name].cjs',
},
},
autoExtension: false,
}),
],
source: {
Expand Down
Loading