使用webpack搭建vue项目

8 篇文章 0 订阅

webpack是打包工具
vue/react都是基于webpack进行打包的,现在来讲webpack是最主流的打包工具。

接下来我们使用webpack搭建一个vue项目。

vue官网借鉴Vue Loaderhttps://vue-loader.vuejs.org/zh/

webpack中所有的loader都是去处理不同后缀名的文件的。

  1. 起步
    创建文件夹,下载基本loader
npm i webpack webpack-dev-server webpack-cli@3.3 vue-loader vue-template-compiler html-webpack-p lugin babel-loader css-loader style-loader -D

在这里插入图片描述

npm i babel-loader @babel/core @babel/preset-env @babel/plugin-transform-runtime -D

在这里插入图片描述
以及,它在支持vue语法时vue的包:

npm i vue -S

在这里插入图片描述

  1. 初步搭建环境
    在这里插入图片描述

webpack.config.js文件

let HtmlWebpackPlugin = require('html-webpack-plugin')
let path = require('path')
//必须引入的 用作将定义过的其他规则(babel,css之类的) 复制到 .vue这个插件插件
// 没有这个插架就不会被转码
const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
    mode: 'production',//development
    entry: './src/main.js',//入口文件
    output: {//hash 线上的时候要有hash 
        // 客户端通过一个网址已经浏览了一个网页了,假设网页更新了他怎么知道你更新了,
        // 如果不设置hash值它加载的js文件 会有一个缓存,就是大家看到的的有一个304的缓存
        // 如果它缓存了的话更新了它不能继续收到 因为它加载的时候以 这个文件的名字 为主
        // 就是他根据域名进行缓存的  客户端之所也没有更新他的网页是因为他有缓存 要想它更新就加一个hash就行
        // hash值它生成的时候是根据 文件名字和内容生成的
        // 所以说 只要有更新 线上的文件名字就一定会发生改变 改变了之后 在客户端浏览网页的时候 就不会请求缓存 
        // filename: "[name][hash:8].js",//生成的路径
        filename: "[name].js",//生成的路径

        path: path.join(__dirname, './dist')
    },
    devServer: {
        port: 9999,
        progress: true,//进度条
        // compress: true,//Gzip压缩
        // contentBase: './dist'
    },
    module: {
        rules: [
            {
                // 个个文件处理的loader
                test: /\.js$/,//例如说 它是.js结尾的 就可以用js结尾的loader
                use: [
                    {
                        loader: 'babel-loader',
                        options: {//options是一个配置项
                            // "preset": ['@babel/preset-env'],//配置它的预设
                            // "plugin": ['@babel/plugin-transform-runtime']
                        }
                    }
                ]
            },
            {
                // 个个文件处理的loader
                test: /\.css$/,//例如说 它是.js结尾的 就可以用js结尾的loader
                use: [//style-loader
                    // loader加载顺序是由后向前
                    'vue-style-loader', 'style-loader', 'css-loader'
                ]
            },
            {
                test: /\.vue$/,
                use: [

                    {
                        loader: 'vue-loader',
                        options: {
                            compiler: require('vue-template-compiler'),
                            transformAssetUrls: {
                                video: ['src', 'poster'],
                                source: 'src',
                                img: 'src',
                                image: ['xlink:href', 'href'],
                                use: ['xlink:href', 'href']
                            }
                        }
                    }
                ],
                include: path.join(__dirname, './src'),
                exclude: /node_modules/
            }
        ]
    },
    resolve: {
        alias: {
            'vue$': 'vue/dist/vue.esm.js',
            '@':path.join(__dirname,'./src')
        }
    },
    plugins: [
        // 请确保引入这个插件!
        new VueLoaderPlugin(),
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: './index.html'
        })
    ]
}

main.js文件

import Vue from 'vue'

// 导入app.vue文件
import App from './App.vue'
new Vue({
    // el: "#app",//挂载到app
    template: '<App></App>',
    // 引入组件
    components: {
        App
    }
}).$mount('#app')

App.vue文件

<template>
<div class="box">
   你好
</div>
</template>

<script>
export default {
  name: "App",
};
</script>

<style scoped>
.box{
    width: 200px;
    height:200px;
    background-color: beige;
}
</style>

接下来 配置build进行打包:

  "scripts": {
    "build": "webpack",
    "dev": "webpack-dev-server"

  },

webpack.config.js配置dev
在这里插入图片描述

  1. 打包
npm run build
npm run dev
  1. 成功在浏览器运行
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值