从零开始构建一个vue项目 --- webpack历险记

本文分上、中、下三个部分(先写上篇)css

  • webpack历险记之一个简单的vue hellowrld (上)
  • vue项目搭建之vue全家桶和element ui、规范、单元测试等等。。。(中)
  • vue项目优化之打包优化,页面加载优化等等。。。(下)

代码示例地址github.com/zwfun/zw-vu…html

如下全部的知识都是从下面的参考文档学来的,若是看过好几遍的同窗我这篇文章就不用看了,若是没看过的先去看几遍,看过了实在仍是不会的同窗再来看我这篇文章vue

本文不写具体的操做步骤, 只写这个过程当中须要什么,具体怎么作 以参考文档的形式给出 网上不少文章一上来就介绍安装各类包,看完一遍以后仍是只知其一;不知其二,无从下手。 本身写一个文章,按本身须要的功能加载各类包。node

我要作什么

第一次配置webpack, 就从构建一个vue的helloworld项目开始。 我须要让webpack帮我打包vue项目webpack

一、须要webapck作什么

这时候是否是脑壳一片空白, 不知道从什么地方开始。 万事开头难,先从我须要webpack帮我作什么开始git

  • 首先固然是帮我打包vue文件
  • 咱们项目中会用到css,scss,js,img,字体文件,webpack是否是也能帮咱们加载css并打包
  • 我会使用es6语法,考虑到兼容性问题, webpack能不能帮我转成es5
  • 开发时我须要在写代码的时候实时展现个人内容,须要热更新
  • 构建整个项目

ps: 也就作5件事很少嘛es6

二、怎么作

开始前先看看webpack官方中文文档-指南文档的概念和指南,也许webpack官方文档-配置部分你也应该看下github

看完以后应该对webpack有必定的了解了, 那我们继续web

  • webpack安装和入口和出口配置 这些直接忽略,不会的话看官方文档的起步章节vue-cli

  • webpack帮咱们打包vue文件

    • 参考vue-loader官方文档-指北-如何冲v14迁移

    • 打包vue文件须要使用到vue-loader(Vue Loader 是一个 webpack 的 loader,它容许你以一种名为单文件组件 的格式撰写 Vue 组件)

    • 安装vue-loader 参考官方文档-手动设置

            npm install -D vue-loader vue-template-compiler
        
    • vue-loader webpack配置 参考官方文档-手动设置

            // webpack.base.config.js
            const VueLoaderPlugin = require('vue-loader/lib/plugin')
      
      
        module.exports = {
        module: {
            rules: [
            // ... 其它规则
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            }
            ]
        },
        plugins: [
            // 请确保引入这个插件!
            new VueLoaderPlugin()
        ]
        }
      复制代码
  • webpack帮咱们打包css文件

          // 正式环境配置
          rules: [
              {
                  test: /\.scss$/,
                  use: [
                      {
                          loader: MiniCssExtractPlugin.loader,
                          options: {
                              publicPath: 'css/'
                          }
                      },
                      'css-loader',
                      'sass-loader',
                  ]
              },
              {
                  test: /\.css$/,
                  use: [
                      {
                          loader: MiniCssExtractPlugin.loader,
                          options: {
                              publicPath: 'css/'
                          }
                      },
                      
                      'css-loader'
                  ]
              },
          ]
    
    
      // 开发环境配置
      rules: [
          {
              test: /\.scss$/,
              use: [
                'vue-style-loader',
                'css-loader',
                'sass-loader'
              ]
          },
          {
              test: /\.css$/,
              use: [
                  'vue-style-loader',
                  'css-loader'
              ]
          }
      ]
    复制代码
  • 使用babel7帮我将es6转为es5

    • babel官方文档
    • babel在线试用
    • babel选择环境配置
    • 使用配置文件的方式配置babel7. 新建一个.babelrc,@babel/env这个preset包括支持现代 JavaScript(ES2015,ES2016 等)的全部插件, @babel/plugin-transform-runtime帮咱们动态转义内置函数(像 Array.from 或 Object.assign 这样的静态方法,像Array.prototype.includes 这样的实例方法), 配置以下
          {
              "presets": [[
                  "@babel/env",
                  {
                  "useBuiltIns": "entry"
                  }
              ]],
              "plugins": ["@babel/plugin-transform-runtime"]
          }
      
  • 加载字体和图片等

    • 参考file-loader

    • 字体和图片是使用file-loader加载。配置file-loader后咱们能使用像import img from './file.png'这样的方式加载文件

          rules: [
              {
                  test: /\.(png|svg|jpg|gif)$/,
                  use: [
                      'file-loader'
                  ]
              },
              {
                  test: /\.(woff|woff2|eot|ttf|otf)$/,
                  use: [
                      'file-loader'
                  ]
              }
          ]
      
  • 热更新

    • 参考使用 webpack-dev-server
    • 开发环境,使用webpack-dev-server本地服务器实现热加载,
    • webpack中配置,浏览器中输入0.0.0.0:8888便可打开项目。
       
        devServer: {
            host: '0.0.0.0',
            historyApiFallback: true,
            port: 8888
        },
      
    - 在packge.json的script中配置"start": "node node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config build/webpack.local.config.js --progress --public --open",这样咱们使用webpack-dev-server加载项目,并实现热加载
  • 构建整个项目

    • 参考webpack官方文档-指南-管理输出
    • 参考设置-htmlwebpackplugin
    • 参考清理 /dist 文件夹
    • npm run build帮咱们构建,那咱们还须要点什么呢?
      • 每次打包时帮咱们清空dist文件。使用(CleanWebpackPlugin)
      • 使用html模板自动将打包生成的js和css文件注入到html模板中,使用(HtmlWebpackPlugin)
            const CleanWebpackPlugin = require('clean-webpack-plugin');
            const HtmlWebpackPlugin = require('html-webpack-plugin');
            plugins: [
                new CleanWebpackPlugin(),
                new HtmlWebpackPlugin({
                    title: 'zw-vue-cli',
                    template: path.resolve(__dirname, '../', 'index.html')
                })
            ]
      

well done

一个基础的vue webpack配置就这样完成了

参考文档

相关文章
相关标签/搜索