Skip to content
Draft
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
3 changes: 3 additions & 0 deletions packages/core/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,9 @@ export async function createConstantRsbuildConfig(): Promise<EnvironmentConfig>
tools: {
htmlPlugin: false,
rspack: {
experiments: {
runtimeMode: 'rspack',
},
optimization: {
nodeEnv: false,
},
Expand Down
30 changes: 25 additions & 5 deletions packages/core/tests/__snapshots__/config.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,8 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
aggregateTimeout: 0
},
experiments: {
sourceImport: true
sourceImport: true,
runtimeMode: 'rspack'
},
devtool: false,
cache: {
Expand Down Expand Up @@ -1174,7 +1175,8 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
aggregateTimeout: 0
},
experiments: {
sourceImport: true
sourceImport: true,
runtimeMode: 'rspack'
},
devtool: false,
cache: {
Expand Down Expand Up @@ -2037,7 +2039,8 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
aggregateTimeout: 0
},
experiments: {
sourceImport: true
sourceImport: true,
runtimeMode: 'rspack'
},
devtool: false,
cache: {
Expand Down Expand Up @@ -2810,7 +2813,8 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
aggregateTimeout: 0
},
experiments: {
sourceImport: true
sourceImport: true,
runtimeMode: 'rspack'
},
devtool: false,
cache: {
Expand Down Expand Up @@ -3588,7 +3592,8 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
aggregateTimeout: 0
},
experiments: {
sourceImport: true
sourceImport: true,
runtimeMode: 'rspack'
},
devtool: false,
cache: {
Expand Down Expand Up @@ -4419,6 +4424,9 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
"htmlPlugin": false,
"rspack": [
{
"experiments": {
"runtimeMode": "rspack",
},
"optimization": {
"nodeEnv": false,
},
Expand Down Expand Up @@ -4694,6 +4702,9 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
"htmlPlugin": false,
"rspack": [
{
"experiments": {
"runtimeMode": "rspack",
},
"optimization": {
"nodeEnv": false,
},
Expand Down Expand Up @@ -4942,6 +4953,9 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
"htmlPlugin": false,
"rspack": [
{
"experiments": {
"runtimeMode": "rspack",
},
"optimization": {
"nodeEnv": false,
},
Expand Down Expand Up @@ -5179,6 +5193,9 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
"htmlPlugin": false,
"rspack": [
{
"experiments": {
"runtimeMode": "rspack",
},
"optimization": {
"nodeEnv": false,
},
Expand Down Expand Up @@ -5371,6 +5388,9 @@ exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config i
"htmlPlugin": false,
"rspack": [
{
"experiments": {
"runtimeMode": "rspack",
},
"optimization": {
"nodeEnv": false,
},
Expand Down
26 changes: 26 additions & 0 deletions packages/core/tests/config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,32 @@ describe('CLI options', () => {
});

describe('Should compose create Rsbuild config correctly', () => {
test('uses Rspack runtime mode by default and allows overriding it', async () => {
const defaultRslib = await createRslib({});
const {
origin: { bundlerConfigs: defaultBundlerConfigs },
} = await defaultRslib.inspectConfig({ verbose: true });
expect(defaultBundlerConfigs[0]?.experiments?.runtimeMode).toBe('rspack');

const overriddenRslib = await createRslib({
config: {
tools: {
rspack: {
experiments: {
runtimeMode: 'webpack',
},
},
},
},
});
const {
origin: { bundlerConfigs: overriddenBundlerConfigs },
} = await overriddenRslib.inspectConfig({ verbose: true });
expect(overriddenBundlerConfigs[0]?.experiments?.runtimeMode).toBe(
'webpack',
);
});

test('treats omitted lib field as default library config', async () => {
const rslibConfig: RslibConfig = {
root: join(__dirname, '..'),
Expand Down
8 changes: 4 additions & 4 deletions tests/integration/alias/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ export { };

exports[`source.alias 2`] = `
""use strict";
var __webpack_exports__ = {};
var __rspack_exports = {};
const a = 'hello world';
console.info(a);
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
for(var __rspack_i in __rspack_exports)exports[__rspack_i] = __rspack_exports[__rspack_i];
Object.defineProperty(exports, '__esModule', {
value: true
});
Expand All @@ -27,10 +27,10 @@ console.info(a);

exports[`source.alias 4`] = `
""use strict";
var __webpack_exports__ = {};
var __rspack_exports = {};
const external_a_cjs_namespaceObject = require("./a.cjs");
console.info(external_a_cjs_namespaceObject.a);
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
for(var __rspack_i in __rspack_exports)exports[__rspack_i] = __rspack_exports[__rspack_i];
Object.defineProperty(exports, '__esModule', {
value: true
});
Expand Down
88 changes: 43 additions & 45 deletions tests/integration/asset/__snapshots__/index.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -57,35 +57,33 @@ export { SvgLogo as ReactComponent };

exports[`use svgr > mixedImport: true should contain export { url as default, ReactComponent } 2`] = `
""use strict";
var __webpack_require__ = {};
(()=>{
__webpack_require__.d = (exports1, getters, values)=>{
var __rspack_context = {};
(function() {
var definePropertyGetters = (exports1, getters, values)=>{
var define = (defs, kind)=>{
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
for(var key in defs)if (hasOwnProperty(defs, key) && !hasOwnProperty(exports1, key)) Object.defineProperty(exports1, key, {
enumerable: true,
[kind]: defs[key]
});
};
define(getters, "get");
define(values, "value");
};
})();
(()=>{
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
})();
(()=>{
__webpack_require__.r = (exports1)=>{
__rspack_context.d = definePropertyGetters;
var hasOwnProperty = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
var makeNamespaceObject = (exports1)=>{
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
value: 'Module'
});
Object.defineProperty(exports1, '__esModule', {
value: true
});
};
__rspack_context.N = makeNamespaceObject;
})();
var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, {
var __rspack_exports = {};
__rspack_context.N(__rspack_exports);
__rspack_context.d(__rspack_exports, {
ReactComponent: ()=>SvgLogo,
default: ()=>logo
});
Expand Down Expand Up @@ -113,12 +111,12 @@ const SvgLogo = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("svg
})
});
const logo = require("../static/svg/logo.svg");
exports.ReactComponent = __webpack_exports__.ReactComponent;
exports["default"] = __webpack_exports__["default"];
for(var __rspack_i in __webpack_exports__)if (-1 === [
exports.ReactComponent = __rspack_exports.ReactComponent;
exports["default"] = __rspack_exports["default"];
for(var __rspack_i in __rspack_exports)if (-1 === [
"ReactComponent",
"default"
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
].indexOf(__rspack_i)) exports[__rspack_i] = __rspack_exports[__rspack_i];
Object.defineProperty(exports, '__esModule', {
value: true
});
Expand Down Expand Up @@ -156,35 +154,33 @@ export default logo;

exports[`use svgr > should only contain svgr default export 2`] = `
""use strict";
var __webpack_require__ = {};
(()=>{
__webpack_require__.d = (exports1, getters, values)=>{
var __rspack_context = {};
(function() {
var definePropertyGetters = (exports1, getters, values)=>{
var define = (defs, kind)=>{
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
for(var key in defs)if (hasOwnProperty(defs, key) && !hasOwnProperty(exports1, key)) Object.defineProperty(exports1, key, {
enumerable: true,
[kind]: defs[key]
});
};
define(getters, "get");
define(values, "value");
};
})();
(()=>{
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
})();
(()=>{
__webpack_require__.r = (exports1)=>{
__rspack_context.d = definePropertyGetters;
var hasOwnProperty = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
var makeNamespaceObject = (exports1)=>{
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
value: 'Module'
});
Object.defineProperty(exports1, '__esModule', {
value: true
});
};
__rspack_context.N = makeNamespaceObject;
})();
var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, {
var __rspack_exports = {};
__rspack_context.N(__rspack_exports);
__rspack_context.d(__rspack_exports, {
default: ()=>logo
});
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
Expand All @@ -211,10 +207,10 @@ const SvgLogo = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("svg
})
});
const logo = SvgLogo;
exports["default"] = __webpack_exports__["default"];
for(var __rspack_i in __webpack_exports__)if (-1 === [
exports["default"] = __rspack_exports["default"];
for(var __rspack_i in __rspack_exports)if (-1 === [
"default"
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
].indexOf(__rspack_i)) exports[__rspack_i] = __rspack_exports[__rspack_i];
Object.defineProperty(exports, '__esModule', {
value: true
});
Expand All @@ -229,26 +225,28 @@ export default logo2_namespaceObject;

exports[`use svgr > should only contain url default export 2`] = `
""use strict";
var __webpack_modules__ = {
var __rspack_modules = {
h (module) {
module.exports = require("../static/svg/logo2.svg");
}
};
var __webpack_module_cache__ = {};
function __webpack_require__(moduleId) {
var cachedModule = __webpack_module_cache__[moduleId];
var __rspack_module_cache = {};
var __rspack_context = {};
function __rspack_require(moduleId) {
var cachedModule = __rspack_module_cache[moduleId];
if (void 0 !== cachedModule) return cachedModule.exports;
var module = __webpack_module_cache__[moduleId] = {
var module = __rspack_module_cache[moduleId] = {
exports: {}
};
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
__rspack_modules[moduleId](module, module.exports, __rspack_context);
return module.exports;
}
var __webpack_exports__ = __webpack_require__("h");
exports["default"] = __webpack_exports__["default"];
for(var __rspack_i in __webpack_exports__)if (-1 === [
__rspack_context.r = __rspack_require;
var __rspack_exports = __rspack_context.r("h");
exports["default"] = __rspack_exports["default"];
for(var __rspack_i in __rspack_exports)if (-1 === [
"default"
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
].indexOf(__rspack_i)) exports[__rspack_i] = __rspack_exports[__rspack_i];
Object.defineProperty(exports, '__esModule', {
value: true
});
Expand Down Expand Up @@ -313,7 +311,7 @@ console.log('defaultImport', 'Url', logo);

exports[`use svgr 2`] = `
""use strict";
var __webpack_exports__ = {};
var __rspack_exports = {};
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
require("react");
const SvgLogo = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("svg", {
Expand Down Expand Up @@ -365,7 +363,7 @@ const logo_SvgLogo = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)
const logo = require("./static/svg/logo.svg");
console.log('namedImport', 'ReactComponent', logo_SvgLogo);
console.log('defaultImport', 'Url', logo);
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
for(var __rspack_i in __rspack_exports)exports[__rspack_i] = __rspack_exports[__rspack_i];
Object.defineProperty(exports, '__esModule', {
value: true
});
Expand Down
Loading