Add the runtimeOnly option to mix:
const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
.vue({runtimeOnly: true});
I tested with similar files you posted. Compiled bundled went from 348Kb to 47.9Kb.
Just for reference, here is my ./resources/js/app.js file:
import {createApp} from 'vue';
import AwesomeComponent from './AwesomeComponent.vue';
createApp({
render: (h) => h(AwesomeComponent, {}),
}).mount('#app');
And here is my ./resources/js/AwesomeComponent.js file:
<template>
<div>Hello there</div>
</template>
<script>
export default {
name: 'AwesomeComponent'
};
</script>
Hope it helps