试着配置一下简易版的vue cli

134 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

在学习了webpack后一直都没有实践的机会,最多的时候也就是简简单单的配置一下devServer,自己学vue也有一段时间了,正好借此机会配置一下简易版的vue cli。

1. 初始化我们的整个项目

由于用的是webpack的项目工具,所以我们直接在终端输入npm init然后进行相关的配置就行,如果想直接使用默认的配置,那么可以直接运行npm init -y即可,这样我们的目录中就会生产一个package.js的包管理。

2. 依赖安装

回想一下我们在使用vue-cli的时候要用到依赖主要就有以下这些

1.运行时依赖 npm install xxx-xxx --save

  • vue 既然都是vue的cli这个肯定是不能没有的。
  • axios 这个是为我们发送请求进行前后端交互用的。
  • 可能还会有一些第三方的UI库。

2.开发时依赖 npm install xxx-xxx --save -d

  • vue-loader 加载vue,将vue解析为js。
  • vue-template-compiler vue的模板编译。
  • scass scass-loader css-loader style-loader 这里就是一些css预处理器,根据自己的需要进行安装配置就行。
  • babel @babel/core @babel/preset-env js在我们的项目中也是必不可少的,那么设计到一些es6需要转化为我们的es5语法等。
  • webpack webpack-cli 这个就是webpack的相关依赖让我们可以以类似npm run serve的指令运行项目。
  • webpack-dev-server 这个就是开发者服务器,想一下我们的运行项目的时候的开发者服务器就是这个东西。

3. 相关文件目录的构建

熟悉脚手架开发的应该对下面的文件目录结构都比较熟悉。

image.png

  • dist文件是我们最后要发布的文件夹,里面的index.html就是最终要运行的页面,webpack通过对我们所写的各种文件进行打包成 .js文件,在HTML文件中引入运行得到最终的页面。
  • src文件夹是我们写项目源代码的地方,App是我们程序的根,main.js是程序的入口。

从上面的分析我们可以很快的写出index.html的内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="root"></div>
    <script src="boundle.js"></script>
</body>
</html>

由于只是简单的测试,所以我们的App.vue也进行简单的书写就好

<template>
  <div>test</div>
</template>

<script>
export default {

}
</script>

<style>

</style>

main.js要负责联系我们的App.vue和我们的index.html。vue3.0的写法如下:

import {createApp} from "vue";
import App from "./App.vue";
createApp(App).mount("#root");

4. 相关webpack的配置

对webpack进行配置,使得其能正确的解析各种文件,进行打包运行。

1.在项目的根目录新建webpack.config.js文件用来配置。

2.webpack是基于node的所以使用的模块化是commonjs,所以配置项是通过module.exports来进行暴露的。

3.webpage的配置主要就5个模块entry:程序的入口output:最终输出的位置loader:各种loader的配置plugin:插件的相关配置mode:不同模式下的配置

4.entry配置:前面的分析已经告诉我们了,我们程序的入口就是main.js,这里我们就直接写相对路径就可以"./src/main.js"。

5.output配置:输出的最终位置是在我们的dist文件夹中,且输出的文件名字应该和我们在index.html中引入的文件名一致,这里我们就叫boundle.js

6.loader配置:loader在webpack的配置项叫module,通过rules数组来进行配置,我们主要配置以下的几个点:①对 .vue文件进行解析,这里用的就是vue-loader,② .m?js文件,mjs是模块的js,对于这些js文件我们要用babel进行解析,用到babel-loader其中options是要预设值为我们的@babel/preset-loader

7.plugins配置:这里是对vue加载插件的配置只要将VueLoaderPlugin的实例传入即可。

8.devServe配置:我们还需要配置响应开启后的web服务器,就是在这个配置项中进行操作。

最终配置完的webpack.config.js如下:

const { resolve } = require("path");
const {VueLoaderPlugin}  = require("vue-loader");
module.exports = {
  entry: "./src/main.js",
  output: {
    filename: "boundle.js"
  },
  module: {
    rules: [
      { test: /\.vue$/, use: "vue-loader" },
      {
        test: /\.s[ca]ss$/, 
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader"],
      },
      {
        test: /\.m?js$/,
        use: [
          {
            loader: "babel-loader",
            options: {
              presets: ["@babel/preset-env"],
            },
          },
        ],
      },
    ],
  },
  plugins: [
      new VueLoaderPlugin()
  ],
  devServer: {
    static: {
      directory: resolve(__dirname, 'dist'),
    },
    compress: true,
    port: 9000,
  },
};

5. package.js的配置

为了我们的在终端中运行npm run serve时候就可以跑我们的代码,我们还需要添加以下代码到我们的package.js中。

image.png

至此一个简易版的vue-cli就搭建完成了。