Skip to content

用 webpack 从 0 到 1 搭建一个 Vue 项目

这篇文章假设你已经了解了 webpack 一些很常用的配置。如果你还没有,可以看看我不久前写的这篇 适合新手的 webpack 5 实战演练,就算对 webpack 有一个基本的了解。

用 vue-cli 创建一个 vue 项目的时候,它的 webpack 配置是什么样的呢?

如果我知道了它的配置,那我就可以照猫画虎,从 0 到 1 搭建一个 Vue 项目。

inspect webpack 配置

首先下载 vue-cli ,再创建一个项目。

shell
# 全局下载
npm install -g @vue/cli

# 创建一个项目
vue create -m npm vue-demo

-m npm 表示指定下载依赖时的包管理器使用 npm。如果不指定,目前 vue-cli@5 默认使用包管理器 pnpm,这样在 node_modules 里就不能 debugger 调试了。

执行命令

shell
# 开发环境下 webpack 配置
vue inspect > output.js --mode development

# 生产环境下 webpack 配置
vue inspect > output.js --mode production

webpack 搭建 vue 项目核心

首先肯定要能够识别 .vue 文件呀。

通过查看 inspect 的 webpack 配置,主要是需要使用到 vue-loader、VueLoaderPlugin。

于是就下载依赖:

shell
npm i vue-loader vue-template-compiler -D

npm i vue

VueLoaderPlugin 通过解构 vue-loader 获得

js
const { VueLoaderPlugin } = require('vue-loader')

然后进行配置:

js
// webpack.config.js
const { VueLoaderPlugin } = require('vue-loader')

module.exports = {
  module: {
    rules: [
      // ... 其它规则
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ]
  },
  plugins: [
    // 请确保引入这个插件!
    new VueLoaderPlugin()
  ]
}

配置好后,webpack 就能够识别 .vue 文件了。

测试

写一些代码测试一下。

main.js

js
import App from './App.vue'

import { createApp } from 'vue'

createApp(App).mount('#app')

App.vue

<template>
  <div class="a">hello, {{ msg }}</div>
</template>
<script setup>
  const msg = 'world!!!!'
</script>
<style>
.a {
  color: red;
  font-size: 30px;
}
</style>

运行命令 npm run dev,然后发现一个奇怪的问题。通过 http://localhost:8081/ 打开项目会报错。

image.png

而通过 http://192.168.1.3:8081/ 打开项目不会有任何问题。

image.png

运行命令 npm run build,也不会出现问题。

这个奇怪的问题可以先暂时不管。重要的是,现在我们已经能让 webpack 识别 .vue 文件了!🎉🎉🎉

image.png

本文演示项目 github 仓库地址

Released under the MIT License.