Skip to content

[Bug]: Build error occurred after upgrading @rslib/core from version 0.18.4 to 0.18.5 #1401

@AlaDouagi

Description

@AlaDouagi

Version

System:
    OS: Windows 11 10.0.22631
    CPU: (14) x64 Intel(R) Core(TM) Ultra 7 165U
    Memory: 15.78 GB / 31.43 GB
  Browsers:
    Chrome: 142.0.7444.177
    Edge: Chromium (140.0.3485.54)
    Firefox: 140.6.0 - C:\Program Files\Mozilla Firefox\firefox.exe
    Internet Explorer: 11.0.22621.3527
  npmPackages:
    @rslib/core: ^0.18.5 => 0.18.5

Details

By only upgrading to the new patch version from 0.18.4 to 0.18.5, the build error appeared for my project

> rslib mf-dev

  Rslib v0.18.5

start   build started...
Federated types created correctly
Federated mocks created correctly
error   Build errors: 
× Prevent writing to file that only differs in casing or query string from already written file.
  │ This will lead to a race-condition and corrupted files on case-insensitive file systems.
  │   - alert.js.map
  │   - Alert.js.map

× Prevent writing to file that only differs in casing or query string from already written file.
  │ This will lead to a race-condition and corrupted files on case-insensitive file systems.
  │   - alert.js
  │   - Alert.js

error   build failed in 3.75 s

Reproduce link

https://codepen.io/Justineo/pen/yLbxxOR

Reproduce Steps

For this rslib.config.ts, a Module Federation entry file with the same characters but one is Alert (capitalized), and the other is alert (lowercase), started to suddenly break the build:

import { resolve } from "node:path";

import { NativeFederationTestsRemote } from "@module-federation/native-federation-tests/rspack";
import { NativeFederationTypeScriptRemote } from "@module-federation/native-federation-typescript/rspack";
import { pluginModuleFederation } from "@module-federation/rsbuild-plugin";
import { pluginReact } from "@rsbuild/plugin-react";
import { defineConfig } from "@rslib/core";

const peerDependencies = require("./package.json").peerDependencies;

const moduleFederationConfig = {
  name: "my_library",
  exposes: {
    "./components/Alert": "./src/components/Alert",
    "./shadcn/ui/alert": "./src/shadcn/ui/alert",
  },
  shared: {
    react: {
      requiredVersion: peerDependencies.react,
      singleton: true,
      eager: true,
    },
    "react-dom": {
      requiredVersion: peerDependencies["react-dom"],
      singleton: true,
      eager: true,
    },
  },
};

export default defineConfig({
  resolve: {
    alias: {
      "@/shadcn": resolve(__dirname, "./src/shadcn"),
    },
  },
  lib: [
    {
      format: "mf",
      source: {
        entry: {
          Alert: "./src/components/Alert.tsx",
          alert: "./src/shadcn/ui/alert.tsx",
        },
      },
      output: {
        target: "web",
        assetPrefix: "auto",
      },
      dev: {
        assetPrefix: undefined,
        lazyCompilation: false,
      },
      plugins: [pluginModuleFederation(moduleFederationConfig, {})],
    },
  ],
  tools: {
    rspack: {
      plugins: [
        NativeFederationTypeScriptRemote({ moduleFederationConfig }),
        NativeFederationTestsRemote({
          moduleFederationConfig,
          additionalBundlerConfig: { format: "esm" },
        }),
      ],
      lazyCompilation: false,
    },
  },
  source: {
    tsconfigPath: "./tsconfig.build.json",
  },
  server: {
    port: 3000,
  },
  plugins: [pluginReact()],
});

PS: The Alert files are simple React files with .tsx extension.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions