在 Vue 3 中,如果你只使用组合式 API(Composition API),并且希望通过 Webpack 配置来避免打包选项式 API(Options API)的源码,可以通过配置 Webpack 的 resolve.alias 来实现。在这个过程中,我们将使用 @vue/composition-api 作为 Vue 的别名,以确保只包含组合式 API 的部分。
在 webpack.config.js 中配置 Webpack,以排除选项式 API 的源码:
const path = require('path');
const { VueLoaderPlugin } = require('vue-loader');
module.exports = {
mode: 'development',
entry: './src/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.runtime.esm-bundler.js'
},
extensions: ['.js', '.vue']
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
plugins: [
new VueLoaderPlugin()
],
devServer: {
contentBase: path.join(__dirname, 'public'),
compress: true,
port: 8080
}
};
-
Webpack 配置:
resolve.alias:通过将vue$指向vue/dist/vue.runtime.esm-bundler.js,我们确保只包含 Vue 的运行时版本,不包含选项式 API 的源码。VueLoaderPlugin:用于处理.vue文件。
-
Vue 组件:
- 使用组合式 API (
<script setup>) 来定义组件逻辑,而不是选项式 API。
- 使用组合式 API (
通过这种配置,你可以确保在使用 Vue 3 时,只打包组合式 API 的部分,避免包含选项式 API 的源码。