Description
Version
3.0.11
Reproduction link
https://github.com/huangxiaochang/vue-next-issue
https://huangxiaochang.github.io/vue-next-issue/
Steps to reproduce
<template>
<div class="home">
</div>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue';
export default defineComponent({
name: 'Home',
setup() {
const homeHeight = ref('1000px')
return {
homeHeight
}
}
});
</script>
<style lang="scss" scoped>
.home {
min-height: v-bind(homeHeight);
}
</style>
When I build the project, the css block is builded to :
.home[data-v-7347e058]{
min-height:var(--109c9849)
}
And generating css var code is builded to:
Object(vue_runtime_esm_bundler["z" /* useCssVars */])(function (_ctx) {
return {
"fae5bece-homeHeight": _ctx.homeHeight
};
});
Because the var name '--109c9849' in css block is not in line with 'fae5bece-homeHeight' in js block,
So the min-height is Incorrect.
This may be a bug in Vue-loader, because it compile css block and script block with different env.(building css block with production, but development in js block).
What is expected?
css var name is consistent between css block and js block
What is actually happening?
it may be a bug in thread-loader used by vue-loader-v16
visiting https://huangxiaochang.github.io/vue-next-issue/ and clicking home route, inspecting the 'hello word', you can see it's dom style and css.