Open yura3d opened 3 years ago
The bug is also reproducible in apps created by Vue CLI 5.
A quick google search shows Vue CLI is using webpack 5. I am wondering if any other frameworks are having this problem. If we can answer that question it will be clear if this is a webpack thing or a vue thing.
I have the same problem.
Version
3.0.5
Reproduction link
https://github.com/yura3d/vue3-webpack5
Steps to reproduce
yarn
andyarn dev
.localhost:8080
, type some symbols to input field and/or press counter button to change component's state.src/App.vue
and change something in<template>
section.What is expected?
HMR applies, input field and counter still contain their values as state shouldn't be changed according to docs: https://vue-loader.vuejs.org/guide/hot-reload.html#state-preservation-rules
What is actually happening?
HMR applies.
State is lost when bundling with webpack 5 if
devtool
is set to something with source maps (source-map
,eval-source-map
, etc).State is preserved when
devtool
doesn't set source maps (false
,eval
), or when bundling with webpack 4 (even with source maps) and almost the samewebpack.config.js
.I see this console output on HMR with webpack 5 and source maps:
And this on HMR without source maps:
It seems component's JS recompiles even when there are no changes in
<script>
section if source maps are enabled.