Skip to content

fix: skip asset emit for legacy output#3317

Closed
underfin wants to merge 1 commit intomainfrom
fix-3296
Closed

fix: skip asset emit for legacy output#3317
underfin wants to merge 1 commit intomainfrom
fix-3296

Conversation

@underfin
Copy link
Copy Markdown
Member

@underfin underfin commented May 9, 2021

fix: #3296

Description

Additional context


What is the purpose of this pull request?

  • Bug fix
  • New Feature
  • Documentation update
  • Other

Before submitting the PR, please make sure you do the following

  • Read the Contributing Guidelines.
  • Read the Pull Request Guidelines and follow the Commit Convention.
  • Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
  • Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
  • Ideally, include relevant tests that fail without this PR but pass with it.

opts.__vite_skip_esbuild__ = true
// @ts-ignore
// inject flag to prevent emit assets for legacy bundle
opts.__vite_legacy = true
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
opts.__vite_legacy = true
opts.__vite_skip_asset_emit__ = true
  • Adds __ at the end to be consistent with __vite_skip_esbuild__
  • Describes the actual consequence of the flag

haoqunjiang added a commit to haoqunjiang/vite that referenced this pull request Jan 21, 2022
Fixes vitejs#3296
Supersedes vitejs#3317

The asset emitting conflict may also exist for other types of assets,
but let's fix the CSS one first.

The conflict here is due to the `hasEmitted` flag that was originally
intended to avoid duplicated CSS for multiple output formats
vitejs@6bce108#diff-2cfbd4f4d8c32727cd8e1a561cffbde0b384a3ce0789340440e144f9d64c10f6R262-R263

When the legacy plugin is used, the flag was set to `true` for the
emitted CSS of the legacy bundle.
But the legacy plugin would remove all its emitted assets later to avoid
duplication.
So this logic results in no CSS to be actually emitted.

In this PR, I used a `__vite_skip_asset_emit__` flag to prevent the
CSS `generateBundle` from executing for the legacy build.
If other asset emitting plugins encounter similar issues, this flag
can be reused.
patak-cat pushed a commit that referenced this pull request Jan 28, 2022
Fixes #3296
Supersedes #3317

The asset emitting conflict may also exist for other types of assets,
but let's fix the CSS one first.

The conflict here is due to the `hasEmitted` flag that was originally
intended to avoid duplicated CSS for multiple output formats
6bce108#diff-2cfbd4f4d8c32727cd8e1a561cffbde0b384a3ce0789340440e144f9d64c10f6R262-R263

When the legacy plugin is used, the flag was set to `true` for the
emitted CSS of the legacy bundle.
But the legacy plugin would remove all its emitted assets later to avoid
duplication.
So this logic results in no CSS to be actually emitted.

In this PR, I used a `__vite_skip_asset_emit__` flag to prevent the
CSS `generateBundle` from executing for the legacy build.
If other asset emitting plugins encounter similar issues, this flag
can be reused.
@haoqunjiang
Copy link
Copy Markdown
Member

Superseded by #6584

@haoqunjiang haoqunjiang closed this Feb 8, 2022
@antfu antfu deleted the fix-3296 branch May 8, 2022 04:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

vite 打包之后 css 文件丢失

3 participants