Skip to content

Asset name conflicts are possible in manifest.json, causing unexpected / missing asset loading #1632

Closed
@gryphonmyers

Description

⚠️ IMPORTANT ⚠️ Please check the following list before proceeding. If you ignore this issue template, your issue will be directly closed.

  • Read the docs.
  • Use Vite >=2.0. (1.x is no longer supported)
  • If the issue is related to 1.x -> 2.0 upgrade, read the Migration Guide first.

Describe the bug

It seems that if you have an entrypoint that shares a base name with one of your asset chunks, the manifest file that ultimately gets written will suffer from loss preventing you from doing a successful backend integration.

In my repro note the following:

  • I have changed the entrypoint to src/main.js in the vite config
  • main.vue is a dynamic import so will get its own css asset chunk
  • Building the site, you will see it generates two css files with basename of main (one for the entrypoint, one for the dynamic chunk).
  • Note that the manifest file only has a single "main.css" record. It is ambiguous which one it refers to, but from my experience it actually ends up referring to the dynamic chunk, meaning that a record of the entrypoint styles are lost.

Reproduction

https://github.com/gryphonmyers/vite-minimal-repro/tree/manifest-name-conflict

System Info

  • vite version: 2.0.0-beta.35
  • Operating System: macos 10.15.7
  • Node version: 14.15.1
  • Package manager (npm/yarn/pnpm) and version: npm 6.14.8

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions