vite-plugin-vue icon indicating copy to clipboard operation
vite-plugin-vue copied to clipboard

fix(plugin-vue-jsx): replace export default defineComponent with babel (fix #345)

Open OMGVecchio opened this issue 1 year ago • 0 comments

Description

if (hasDefault && (needHmr || ssr)) {
  result.code =
    result.code!.replace(
      /export default defineComponent/g,
      `const __default__ = defineComponent`,
    ) + `\nexport default __default__`
}

The code above will compile const str = 'export default defineComponent' unexpectedly in the development environment

We can achieve the same task with babel

Additional context

issue #345

reproduction https://stackblitz.com/edit/vitejs-vite-rgsvev?file=src%2FApp.tsx

resolution https://stackblitz.com/~/github.com/OMGVecchio/vite-plugin-vue?file=demo/ExportDefault.jsx


What is the purpose of this pull request?

  • [x] Bug fix
  • [ ] New Feature
  • [ ] Documentation update
  • [ ] Other

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

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

OMGVecchio avatar Jan 28 '24 20:01 OMGVecchio