[一篇文章说清 webpack、vite、vue-cli、create-vue 的区别 ](https://www.cnblogs.com/jyk/archive/2022/05/09/16248880.html)
开始创建一个项目,肯定需要一个html网页,并且引入打包后的js文件。
// dist/index.html
src下放的是我们的源代码。
// src/main.js
// 入口文件
import Vue from "vue";
new Vue({
});
此时的目录结构:

npm i vue@2.7 element-ui axios
bundle.js还不存在,所以需要去安装开发依赖。
// -D: 开发依赖
// webpack是安装它的打包器本体,webpack-cli提供了终端命令,去调用这个webpack
// loader在webpack里的作用:进行代码转换(比如把sass代码转换成css代码)
// vue-loader 把.vue的文件提取出js代码,style,以及模板
// vue-template-compiler 转换.vue文件里面的html(vue模板编译器)
// sass-loader 把sass代码转换成css代码
// css-loader 对css代码进行处理
// style-loader 通过style标签加到html里面去
// babel-loader 将新的js语法转换成老的js语法
// @babel-core babel的核心库
// @babel/preset-env es语法编译
npm i -D webpack webpack-cli vue-loader vue-template-compiler sass-loader sass css-loader style-loader babel-loader @babel/core @babel/preset-env
// 导入path的原因:因为不同系统下的分割符不同,有可能是\也有可能是/,所以借助node提供的内置模块
const path = require("path");
const { VueLoaderPlugin } = require("vue-loader");
module.exports = {
// 入口文件
entry: "./src/main.js",
// 打包后的文件
output: {
path: path.resolve(__dirname, "dist"), // 打包后的文件放在那个文件夹(绝对路径)
filename: "bundle.js", // 定义打包后的文件名
},
// 在webpack里面任何文件都叫模块
module: {
// 模块的打包规则
rules: [
{
test: /\.vue$/, // test做判断
use: "vue-loader", // 使用那个loader来处理判断后的文件
},
{
test: /\.s[ca]ss$/,
use: ["style-loader", "css-loader", "sass-loader"],
},
{
test: /\.m?js$/,
use: {
loader: "babel-loader",
options: { presets: ["@babel/preset-env"] },
},
},
{
test: /\.(png|jpe?g|gif|svg|webp)$/,
// 处理图片老的写法
// use: { loader: "file-loader", options: { esModule: false } },
// 新的写法
type: "asset/resource",
},
],
},
// 插件,给webpack增加更多新的功能
// 通过这个插件告诉vue-loader, 处理rules,将这些规则应用到*.vue文件里的相应语言块中
// 即将我们配置的其它loader,统一交给vue-loader来处理
plugins: [new VueLoaderPlugin()],
};
main.js:
// 入口文件
import Vue from "vue";
import App from "./App.vue";
new Vue({
// 绑定到那个元素
el: "#app",
// 通过渲染函数来指定
render: (h) => h(App),
});
App.vue:
你好
此时直接输入webpack会报错,所以需要在package.json文件下创建脚本:
–mode后面有两个选项:
–watch:当webpack发现有代码变换的时候,它会重新编译、重新打包。
“build” : 上线的时候运行构建命令
"scripts": {
"serve": "webpack --mode=development --watch",
"build": "webpack --mode=production"
},
此时执行npm run serve:

再看此时的目录和生成的bundle.js文件:

踩的坑:vue-loader版本问题,解决如下:
TypeError: Cannot read properties of undefined (reading ‘styles‘)

安装路由:npm i vue-router@3.2.0
在src下创建router文件夹,并创建index.js文件
具体的写法和平时写的一样,这里就不贴出来了
npm i -D webpack-dev-server"webpack-dev-server"已经安装了,再在scripts下修改代码。 "serve": "webpack serve --mode=development"
devServer: {
static: "./dist", // 静态文件夹指向dist目录
},
输入npm run serve启动项目:

打开查看

devServer: {
static: "./dist", // 静态文件夹指向dist目录
open: true, //输入 npm run serve 自动打开浏览器
host: "local-ip", //设置本机ip
port: 8888, //手动指定端口号
},
大体上是一样的,只不过vue3的api会不同,以及新建Vue实例那里。
注意安装依赖时,vue-loader的版本问题。
在使用npm安装package之前,得先 npm init 否则 node_modules 不会出现。