webpack 基础配置

常见配置

  1. 文件打包的出口和入口
  2. webpack如何开启一台服务
  3. webpack 如何打包图片,静态资源等。
  4. webpack 配置 loader
  5. 配置 plugin
  6. 配置sourceMap
  7. 配置 babel 语法降级等

接下来 , 我们先从webpack的基本配置 开始吧!

在准备 配置之前 , 搭建一个 webpack 工程 , 你可以在自己的工程下

npm init 或者 yarn init

1: 你可以设置 项目名称 , 描述,入口文件 , 发布的url 等等 ,你也可以一路 Enter 下去。

在这里插入图片描述
运行上方代码

接着 我们就得到了一个 package.json 文件 , 该文件就是用来保存,运行脚本 , 依赖包 , 版本信息等等配置文件。
然后,我们需要在根目录下创建一个 webpack.config.js文件 ,该文件就是编写webpack的一些配置的文件。

2: 依赖包 下载
上面我们已经将文件创建出来了 , 接下来 ,我们既然需要 依赖webpack 对项目进行打包,那我们 就需要下载对应的资源包。

//下载webpack cli ,这里的-D 是指开发时依赖的资源包,到生产上就不会再下载了
npm install -D webpack-cli

在这里插入图片描述

下载,完成后 执行 npx webpackwebpack 会将 src/index.js进行打包输出到 dist 目录下

3: 运行脚本执行

package.json 文件中 配置脚本

   "test": "echo \"Error: no test specified\" && exit 1","build": "webpack","watch": "webpack --watch","dev": "webpack-dev-server"

接下来 你只需要执行 npm run build 就可以对项目进行构建了。
4 :webpack配置打包的入出口文件

module.exports = {entry : './src/index.js'  // 配置打包入口文件output : { // 配置打包完成的出口文件 路径 path : path.resolve(__dirname , './dist/'),filename : 'building.js'}
}

5: webpack开启本地服务

  • 下载 webpack-dev-server 依赖
    webpack-dev-server 原理:
    • 在本地开启一台 express 服务器。

    • package.json 文件中 ,加上上面这段配置,接下来你可以 npm run dev,浏览器中输入 http://localhost:8080/

        "dev": "webpack-dev-server"
      

      同时 你也可以在 webpack.config.js文件中配置 devServer

      const path = require("path");module.exports = {devServer : {  // host : 'localhost', // 服务启动的 ip 地址 localhost 即本地port : '3000', // 开启的端口open : true // 是否开启服务后 打开浏览器},entry : './src/index.js',output : {path : path.resolve(__dirname , './dist/'),filename : 'building.js'}
      }
      

      于是你发现了一个神奇的问题,页面白屏了 ,报错找不到资源。

      • 页面白屏
        先说原因,由于 我们访问 http://localhost:8080 打包完成后 默认访问的是 dist 目录下的index.html 但我们发现打包完成后 , dist 目录下并没有index.html 所以就没找到资源。
        在这里插入图片描述
        解决方法
        通过 html-webpack-plugin插件 可以在打包完成后会自动在 dist 目录下 创建一个 index.html ,但需要你编写它的配置。

        const HtmlWebpackPlugin = require('html-webpack-plugin')
        module.exports = {plugins : [new HtmlWebpackPlugin({filename : 'index.html',  // 生成的文件名template : '/index.html' // 将哪个模板作为html})],
        }
        

      配置完成后,需要先打包,再重新启动服务即可正常显示

      webpackcss , less sass 静态资源的处理。

      我们知道 webpack 打包 css 的时候 是将所有的 css 注入到 html 文件的 style 标签中,然后才会样式生效。

      • 打包 css

      那如何让 webpack帮助我们将 css 进行打包呢 ?

      下载 css-loader 和 style-loader

      yarn add css-loader -D 
      yarn add style-loader -D 
      或者 
      npm install  css-loader -D 
      npm install style-loader -D 
      

      配置 webpack.config.js

      // 在配置中 添加该选项 
      module : {
      rules : [{test : /\.css$/,use : ['style-loader','css-loader']}] 
      }
      

      注意 ,webpack 解析 loader的顺序是 从右到左进行解析

      插入一条 常见面试题

      面试官 : style-loader 和 css-loader 的区别?

      css-loader ,主要是 解析我们编写的 css ,因为 css 本身并不是一个模块,所以在js 中导入 css 你就需要 css-loader 来识别它们,而 style-loader 就是将 css-loader 解析完的结果 ,作为样式内容插入到 html style标签内,这样我们样式就生效了。

      • 处理 less sass
        我们 开发中 常用的 less sass 这些 预处理器 编写的 css 怎么处理呢 ? 接下来要讲的是 webpack处理 less sass 编写的样式

        import './styles/index.less'; // 导入我们的 less文件 
        console.log('111');less复制代码.name {color:  red;
        }
        ul> li {font-size: 25px;
        }
        

        当你编写完成后 , 保存,终端会 提示,你可能需要一个 loader 来处理这种文件类型。

        ERROR in ./src/styles/index.less 1:0
        Module parse failed: Unexpected token (1:0)
        You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
        > .name {
        |   color:  red;
        | }@ ./src/index.js 1:0-29 
        

        我们在此时 需要下载一个 less-loader

        yarn add less-loader sass-loader -D 或者
        npm install less-loader sass-loade -D 
        
         module : {rules : [{test : /\.css/,use : ['style-loader' , 'css-loader']},{test : /\.less/,use : ['style-loader' , 'css-loader' , 'less-loader']},{test : /\.sass/,use : ['style-loader' , 'css-loader' , 'sass-loader']}]},
        

        3:webpack 处理静态资源

        问题 : 图片资源以相对路径引入打包后,webpack无法展示。
        原因 :

        • 我们服务开启后,index.html中 通过 ./ 寻找,

        • 但打包完成的 dist 目录下根本没有这张1.png 这张图片,这是由于webpack打包并没有将我们的静态资源打包进去

          接下来就看一下如何将 静态资源添加到webpack打包选项中去吧。

          <!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 class="name">张三</div><img src="./src/img/1.png" alt=""><ul><li>dasdasdasdas</li></ul><script src="./main.js"></script>
          </body>
          </html>
          

          下载 file-loader 或者 url-loader —> npm install file-loader -D 或者 yarn add file-loader -D

          配置

          module : {rules : [{test : /\.css$/,use : ['style-loader' , 'css-loader']},{test : /\.less$/,use : ['style-loader' , 'css-loader' , 'less-loader']},{test : /\.(png|jpeg|jpg|bmp)$/,use : {loader : 'file-loader', // 使用的什么loader 当然你也可以使用 url-loader ,url-loader是封装了file-loaer。options: {outputPath : 'images', // 输出到 dist 哪个 目录下,limit : 5 * 1024,name : '[name].[ext]' // 生成的文件名称 [name] : 原文件名称 [ext] : 原文件后缀 , [hash] :生成哈希值字符串}}}]},
          

        webpack 之 babel编译js高级语法代码

        我们在编写 js时 一般会 使用 ES6一些高级语法特性,但此时 有些旧的版本浏览器本身是不支持这些高级语法的,例如 es6 里的 class ,其实就是 原型继承的语法糖,如果class不做降级处理,会照成程序暂停运行情况。
        那我们 接下来先了解一下 ,与 bebel 相关的一些降级核心包。

        1. @babel/babel-core // babel的核心包

        2. @babel/preset-env // babel 的语法转换包

        3. babel-loader // babel-loader 对语法进行编译转换的loader
          在转换之前 , 你需要先下载该包,下载完成之后,我们接下来进行配置,在 rules 规则中 新增一条 匹配规则

          { test : /\.js$/,use : {loader : 'babel-loader',},exclude : /node_modules/},
          

          或者 在根目录下创建 .babelrc 文件在里面编写相关配置

          {
          // babel-plugin-transform-class-properties 对 es6 class 进行转换插件 
          // @babel/plugin-transform-runtime // 帮助你节省代码体积"presets" : ["@babel/env"],"plugins": ["@babel/plugin-transform-runtime" , "babel-plugin-transform-class-propertiess"]
          }
          

        webpack 配置 sourceMap

        • 什么是 suorceMap
          其实很多人对 sourceMap的理解很 抽象 , 这到底是个 什么东西?
          • 简单来说 sourceMap 生成映射文件 其实就是为了 提高开发效率,更快的映射到代码的每一行,比如说当前我们控制台有打印,sourceMap 就能够更快的帮你定位到 当前打印的那一行。

        配置
        webpack.config.js 中 添加

         devtool : 'cheap-module-source-map'
        

        思考

        • 为什么执行 npx webpack 而不是 npm webpack ?
          解释 : 在平时 开发中 我们 一般会在项目依赖webpack 打包 是在项目中进行下载的 ,开箱即用的效果,并不会在我们电脑上装载webpack构建工具, 当然你也可以 在全局安装 , 而npx 就会在当前项目下寻找webpack 进行构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/134989.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序地址空间

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——程序地址空间 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;我们一直随口就能说出来的栈区&#xff0c;堆区&#xff0c;常量…

VS code 下 makefile 【缺少分隔符 停下来】 报错解决方法

首先来看报错的makefile源码 再来看报错的信息&#xff1a; 第5行缺少分隔符&#xff0c;其实不止是第5行&#xff0c;只要是前面需要加tab留白的行都会报这个错误&#xff0c;比如说第7行第11行 编译的时候&#xff0c;前面的留白必须是按tab键生成的 但是&#xff01;&…

C++11线程库简介

前言 在c11之前涉及多线程的问题都是和平台相关的&#xff0c;比如windows和linux都有一套自己的接口&#xff0c;这使得代码的可移植性变差。C11中最重要的特性就是对线程进行了支持&#xff0c;使得C在编程时不再依赖第三方库&#xff0c;而且原子操作中还引入了原子类的概念…

LeetCode:3. 无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; // 3.无重复字符的最长子串 // 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 class Solu…

DETR:End-to-End Object Detection with Transformers

代码&#xff1a;https://github.com/HuKai97/detr-annotations 论文&#xff1a;https://arxiv.org/pdf/2005.12872.pdf 参考视频&#xff1a;DETR 论文精读【论文精读】_哔哩哔哩_bilibili 团队&#xff1a;Meta AI 摘要 DETR 做目标检测任务既不需要proposal&#xff0…

elasticsearch4-文档操作

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

html的日期选择插件

1.效果 2.文档 https://layui.gitee.io/v2/docs/ 3.引入 官网地址&#xff1a; https://layui.gitee.io/v2/ 引入&#xff08;在官网下载&#xff0c;&#xff09;jquery-1.7.2.min.js,layui/layui.js **<link href"js/layui/css/layui.css" rel"stylesh…

哈夫曼编码原理及实现

文章目录 一.哈夫曼编码原理哈夫曼二叉树构建 二.具体代码实现 一.哈夫曼编码原理 哈夫曼编码&#xff08;Huffman Coding&#xff09;是一种用于数据压缩的编码方法&#xff0c;它通过给出不同的数据符号分配不同长度的编码&#xff0c;使得出现频率高的符号具有较短的编码&a…

OpenCV(四十一):图像分割-分水岭法

1.分水岭方法介绍 OpenCV 提供了分水岭算法&#xff08;Watershed Algorithm&#xff09;的实现&#xff0c; 使用分水岭算法对图像进行分割&#xff0c;将图像的不同区域分割成互不干扰的区域。分水岭算法模拟了水在图像中的扩散和聚集过程&#xff0c;将标记的边界被看作是阻…

PHP8中获取并删除数组中第一个元素-PHP8知识详解

我在上一节关于数组的教程&#xff0c;讲的是在php8中获取并删除数组中最后一个元素&#xff0c;今天分享的是相反的&#xff1a;PHP8中获取并删除数组中第一个元素。 回顾一下昨天的知识&#xff0c;array_pop()函数将返回数组的最后一个元素&#xff0c;今天学习的是使用arr…

Vue自动生成二维码并可下载二维码

遇到一个需求&#xff0c;需要前端自行生成用户的个人名片分享二维码&#xff0c;并提供二维码下载功能。在网上找到很多解决方案&#xff0c;最终吭哧吭哧做完了&#xff0c;把它整理记录一下&#xff0c;方便后续学习使用&#xff01;嘿嘿O(∩_∩)O~ 这个小东西有以下功能特点…

AWT中常用组件

笔记&#xff1a;https://www.yuque.com/huangzhanqi/rhwoir/repuodh23fz01wiv 仓库&#xff1a;Java图形化界面: Java图形化界面学习demo与资料 (gitee.com) 基本组件 组件名 功能 Button Button Canvas 用于绘图的画布 Checkbox 复选框组件&#xff08;也可当做单选…

批量获取CSDN文章对文章质量分进行检测,有助于优化文章质量

&#x1f4da;目录 ⚙️简介✨分析获取步骤⛳获取文章列表☘️前期准备✨ 接口解析⚡️ 获取文章的接口 ☄️文章质量分接口⭐接口分析 ⌛代码实现&#xff1a;⚓核心代码:⛵测试用例:⛴ 运行效果:☘️增加Excel导出 ✍️结束 ⚙️简介 有时候我们写文章是为了记录当下遇到的bu…

查看表结构

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: desc 表名; 描述: 如果表不存在,就提示不存在; 如果表存在,就显示表的结构 比如: desc test01; desc test02; 错误示范: mysql> …

systemserver的inputdispatcher直接产生CANCEL事件原理分析-讨厌的android触摸面试题

背景回顾&#xff1a; 上一个blog已经重点讲解了app层面自己产生的Cancel触摸事件&#xff0c;大概产生的原理如下&#xff1a; 上一个blog地址&#xff1a;https://blog.csdn.net/learnframework/article/details/124086882 即可以看出来&#xff0c;在服务端systemserver其实…

vue3-vant4-vite-pinia-axios-less学习日记

代码地址 GitHub&#xff1a;vue3-vant4-vite-pinia-axios-less 效果如图 1.首页为导航栏 2.绑定英雄页 3.注册页 4.英雄列表页 5.后面不截图了&#xff0c;没啥了 模块 1.vant4&#xff1a;按需引入组件样式文档 2.安装该vite-plugin-vue-setup-extend插件可以直接在…

基于Java+SpringBoot+Vue的图书借还小程序的设计与实现(亮点:多角色、点赞评论、借书还书、在线支付)

图书借还管理小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 小…

Linux安全加固:保护你的服务器

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【深度学习实验】线性模型(三):使用Pytorch实现简单线性模型:搭建、构造损失函数、计算损失值

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 定义线性模型linear_model 2. 定义损失函数loss_function 3. 定义数据 4. 调用模型 5. 完整代码 一、实验介绍 使用Pytorch实现 线性模型搭建构造损失函数计算损失值 二、…

TensorFlow与pytorch特定版本虚拟环境的安装

TensorFlow与Python的版本对应&#xff0c;注意&#xff0c;一定要选择对应的版本&#xff0c;否则会让你非常痛苦&#xff0c;折腾很久搞不清楚原因。 建议使用国内镜像源安装 没有GPU后缀的就表示是CPU版本的&#xff0c;不加版本就是最新 pip install tensorflow -i https:…