webpack基本使用和开发环境配置

news2024/9/24 11:27:32

目录

1 webpack 基本使用

01 webpack 简介

02 webpack 初体验

2 webpack开发环境配置

03 打包样式资源

04 打包html资源

05 打包图片资源

06 打包其他资源(以打包icon为例)

07 devServer

08.开发环境配置


1 webpack 基本使用

由于笔记文档没有按照之前的md格式书写,所以排版上代码上存在问题😢😢😢😢

01 webpack 简介

初始化文件---包的名字---默认值ok---下载jQuery

02 webpack 初体验

1.webpacvk安装

npm install --save-dev webpack@4.46.0

npm install --save-dev webpack-cli@3

2.运行指令

  • 开发环境

  • 生产环境

3.css不能处理

2 webpack开发环境配置

03 打包样式资源

1 打包css

loader:解析翻译webpack不能识别的模块,loader需要定义配置文件

项目(src)使用的是:ES6

配置 (webpack.config.js) 使用的是:common.js

  1. 配置css-loader   style-loader

 npm i css-loader@3.4.2 style-loader@1.1.3 -D

(如果,安装错误,可能是因为版本过高的问题)

  1. webpack.config.js

JavaScript
/*
  webpack.config.js  webpack
的配置文件
    作用: 指示 webpack 干哪些活(当你运行 webpack 指令时,会加载里面的配置)

    所有构建工具都是基于nodejs平台运行的~模块化默认采用commonjs。
*/

// resolve用来拼接绝对路径的方法
const { resolve } = require('path');

module.exports = {
  // webpack配置
  // 入口起点
  entry: './src/index.js',
  // 输出
  output: {
    // 输出文件名
    filename: 'built.js',
    // 输出路径
    // __dirname nodejs的变量,代表当前文件的目录绝对路径
    path: resolve(__dirname, 'build')
  },
  // loader的配置
  module: {
    rules: [
      // 详细loader配置
      // 不同文件必须配置不同loader处理
      {
        // 匹配哪些文件
        test: /\.css$/,
        // 使用哪些loader进行处理
        use: [
          // use数组中loader执行顺序:从右到左,从下到上 依次执行
          // 创建style标签,将js中的样式资源插入进行,添加到head中生效
          'style-loader',
          // 将css文件变成commonjs模块加载js中,里面内容是样式字符串
          'css-loader'
        ]
      }, 
    ]
  },
  // plugins的配置
  plugins: [
    // 详细plugins的配置
  ],
  // 模式
  mode: 'development', // 开发模式
  // mode: 'production'
}

 

  1. 打包

没有全局安装的用 npx webpack

此时的css也打包进去了

小结一下:

打包过程:首先是入口文件index.js,之后又相关联打包文件eg index.css,可以打包的直接打包,不可以的,需要配置webpack.config.js然后再打包,打包之后的文件到build/built.js,可以在里面代码中找到相关的打包的文件

  1. 是否生效

在build里面新建一个index.html

2 打包less

如果直接打包less,会出现报错,我们需要配置less-loader

  1. 配置less-loader

  1. webpack.config.js

上述代码里面添加

JavaScript
{
        test: /\.less$/,
        use: [
          'style-loader',
          'css-loader',
          'less-loader'
        ]
        
 }

  1. 打包

小结一下:

webpack只能打包js,json,其他的css,less等需要下载loader资源

不同文件配置不同loader处理

04 打包html资源

webpack.config.js基本结构

  1. 下载插件

npm i html-webpack-plugin@3 -D

  1. 引用,使用

  1. 打包

  1. plugins配置

05 打包图片资源

  1. 入口文件引入样式

import './index.less'

html,不用引入,因为插件会自动生成

  1. less里面又引入了图片资源,所以我们需要配置,来打包这个资源
  1. 对样式文件和html文件进行处理

JavaScript
const { resolve } = require('path');
const HtmlWebpackPlungin = require('html-webpack-plugin')

module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'built.js',
        path: resolve(__dirname, 'build')
    },

    module: {
        rules: [
            {
                test: /\.less$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'less-loader'
                ]
            }
        ],
    },
    plugins: [
        new HtmlWebpackPlungin({
            template: './src/index.html'
        })
    ],
    mode: 'development'
}

  1. 打包

会出现错误------图片资源

  1. url 图片处理
  • 1  webpack.config.js配置

  • 2 下载url-loader ,  file-loader

 npm i url-loader@3.0.0 file-loader@5.0.2 -D

  • 3 npx webpack 打包

样式里面的url的图片资源都可以处理,但是默认处理不了html里面的图片,需要下载html-loader

  1. html图片处理
  1. webpack.config.js配置

  1. 下载   npm i html-loader@0.5.5 -D
  1. 打包  npx webpack

打包成功了,但是还是会有问题,页面中图片还是会裂开

问题: 因为url-loader默认使用es6模块化解析,而html-loader引入图片是commonjs

解析时会出问题: [ object Module ]

解决: 关闭url-loaderes6模块化,使用commonjs解析

esModule: false

  1. 图片名过长,更改图片名

06 打包其他资源(以打包icon为例)

步骤:

  1. 阿里图标下载所需要资源代码
  1. index.html引入图标 <span class="iconfont icon-zhaopinqiuzhi"></span>
  1. 入口文件index.js 引入iconfont样式文件  import './iconfont.css'
  1. 写webpack配置

JavaScript
// 打包其他资源(除了html/js/css资源以外的资源)
 {
        // 排除css/js/html资源
        exclude: /\.(css|js|html)$/,
        loader: 'file-loader'
 }

  1. 打包npx webpack

  1. 运行build里面的index.html

07 devServer

  1. webpack配置

  1. 下载  npm i webpack-dev-server@3.10.3 -D
  1. 启动  npx webpack-dev-server

  1. localhost:3000就可以访问尴尬index.html页面内容

  1. 更改代码内容时,终端也会随之改变,localhost里面的内容也会改变,都是自动编译的,就不用像之前,修改完代码,就打包一次(监视源代码)

目录

1 webpack 基本使用

01 webpack 简介

02 webpack 初体验

2 webpack开发环境配置

03 打包样式资源

04 打包html资源

05 打包图片资源

06 打包其他资源(以打包icon为例)

07 devServer

08.开发环境配置


08.开发环境配置

JavaScript
/*
 
开发环境配置:能让代码运行
    运行项目指令:
      webpack 会将打包结果输出出去
      npx webpack-dev-server 只会在内存中编译打包,没有输出
*/

const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/js/index.js',
  output: {
    filename: 'js/built.js',
    path: resolve(__dirname, 'build')
  },
  module: {
    rules: [
      // loader的配置
      {
        // 处理less资源
        test: /\.less$/,
        use: ['style-loader', 'css-loader', 'less-loader']
      },
      {
        // 处理css资源
        test: /\.css$/,
        use: ['style-loader', 'css-loader']
      },
      {
        // 处理图片资源
        test: /\.(jpg|png|gif)$/,
        loader: 'url-loader',
        options: {
          limit: 8 * 1024,
          name: '[hash:10].[ext]',
          // 关闭es6模块化
          esModule: false,
          outputPath: 'imgs'
        }
      },
      {
        // 处理html中img资源
        test: /\.html$/,
        loader: 'html-loader'
      },
      {
        // 处理其他资源
        exclude: /\.(html|js|css|less|jpg|png|gif)/,
        loader: 'file-loader',
        options: {
          name: '[hash:10].[ext]',
          outputPath: 'media'
        }
      }
    ]
  },
  plugins: [
    // plugins的配置
    new HtmlWebpackPlugin({
      template: './src/index.html'
    })
  ],
  mode: 'development',
  devServer: {
    contentBase: resolve(__dirname, 'build'),
    compress: true,
    port: 3000,
    open: true
  }
};

 

补充:

源代码通过webpack编译处理,输出bundle,资源文件就能被浏览器运行

我们就需要搭建这样的环境,我们还加了一些自动化操作,自动打开浏览器,等等

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

批量下载Landsat遥感影像的方法

本文介绍在USGS网站批量下载Landsat系列遥感影像的方法。首先打开EarthExplorer的官网&#xff0c;首先完成注册与登录。接下来点击左侧“Search Criteria”&#xff0c;首先选择研究区域。研究区域的划定有多种方法&#xff0c;可以依据地理名称选定研究区域&#xff0c;也可以…

klipper使用webcam设置多个摄像头方式

一、前言 使用klipper设置多个摄像头&#xff0c;折腾了好些天&#xff0c;网上资料很少&#xff0c;这里写一个帖子记录一下 二、环境 参考链接&#xff1a;https://www.cnblogs.com/sjqlwy/p/klipper_webcam.html 我的klipper安装在香橙派上面&#xff0c;系统是debian&a…

这一次,彻底入门前端测试,覆盖单元测试、组件测试(2.4w 字)

前端测试一直是前端工程化中很重要的话题&#xff0c;但是很多人往往对测试产生误解&#xff0c;认为测试不仅没有什么用而且还浪费时间&#xff0c;或者测试应该让测试人员来做&#xff0c;自己应该专注于开发。所以&#xff0c;文章开头会先从"软件工程语境下的软件测试…

【运筹优化】剩余空间法求解带顺序约束的二维矩形装箱问题 + Java代码实现

文章目录一、带顺序约束的二维矩形装箱问题二、剩余空间法三、完整代码实现3.1 Instance 实例类3.2 Item 物品类3.3 PlaceItem 已放置物品类3.4 Solution 结果类3.5 RSPackingWithWeight 剩余空间算法类3.6 Run 运行类3.7 测试案例3.8 ReadDataUtil 数据读取类3.9 运行结果展示…

Spring boot + mybatis-plus 遇到 数据库字段 创建不规范 大驼峰 下划线 导致前端传参数 后端收不到参数 解决方案

最近使用springboot 连接了一个 sqlserver 数据库 由于数据库年数久远 &#xff0c;建表字段不规范 大驼峰 下划线的字段名都有 但是 java 中 Spring boot mybatis-plus 又严格按照小驼峰 格式 生成实体类 如果不是小驼峰格式 Data 注解 get set 方法 在前端请求参数 使用这个…

如何评估模糊测试工具-unibench的使用

unibench是一个用来评估模糊测试工具的benchmark。这个benchmark集成了20多个常用的测试程序&#xff0c;以及许多模糊测试工具。 这篇文章&#xff08;https://zhuanlan.zhihu.com/p/421124258&#xff09;对unibench进行了简单的介绍&#xff0c;本文就不再赘诉&#xff0c;…

设计模式-第6章(工厂模式)

工厂模式简单工厂实现工厂模式实现简单工厂 VS 工厂方法商场收银程序再再升级&#xff08;简单工厂策略装饰工厂方法&#xff09;工厂方法模式总结简单工厂实现 在简单工厂类中&#xff0c;通过不同的运算符&#xff0c;创建具体的运算类。 public class OperationFactory {pu…

CMMI流程规范—实现与测试

一、概述实现与测试&#xff08;Implementation and Test, IT&#xff09;的目的是依据系统设计文档&#xff0c;编写并测试整个系统的代码。在本规范中&#xff0c;实现与测试是“编程、代码审查、单元测试、集成测试、缺陷管理与改错”的综合表述。实现与测试过程域是SPP模型…

从 AI 绘画到 ChatGPT,聊聊生成式 AI

我们小时候经常有幻想&#xff0c;未来不用再去上班了&#xff0c;在工厂工作的都是机器人。在家也不用打扫卫生&#xff0c;机器人可以包揽一切。不知不觉间&#xff0c;我们小时候的幻想已经慢慢变成现实&#xff0c;工厂里有了多种型号的机械臂&#xff0c;代替了部分流水线…

Vue3中watch的value问题

目录前言一&#xff0c;ref和reactive的简单复习1.ref函数1.2 reactive函数1.3 用ref定义对象类型数据不用reactive二&#xff0c;watch的value问题2.1 ref2.1.1 普通类型数据2.1.2 对象类型数据2.1.3 另一种方式2.2 reactive三&#xff0c;总结后记前言 在Vue3中&#xff0c;…

论文投稿指南——中文核心期刊推荐(中国文学作品)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题

前言 博主自己在22年夏天根据课程要求做了一个小程序连接阿里云服务器的案例&#xff0c;在最近又碰到了相应的需求。 原参考文章&#xff1a;微信小程序 Node连接本地MYSQL_微信小程序nodejs连接数据库_JJJenny0607的博客-CSDN博客 ,还请多多支持原作者&#xff01; 第二次…

vue2 @hook 的解析与妙用

目录前言几种用法用法一 将放在多个生命周期的逻辑&#xff0c;统一到一个生命周期中用法二 监听子组件生命周期运行的情况运用场景场景一 许多时候&#xff0c;我们不得不在不同的生命周期中执行某些逻辑&#xff0c;并且这些逻辑会用到一些通用的变量&#xff0c;这些通用变量…

nginx日志服务之敏感信息脱敏

1. 创建实验资源 开始实验之前&#xff0c;您需要先创建实验相关资源。 日志服务之敏感信息脱敏与审计 2. 创建原始数据 本步骤将指导您如何创建NGINX模拟数据。 双击打开虚拟桌面的Firefox ESR浏览器。 在RAM用户登录框中单击下一步&#xff0c;并复制粘贴页面左上角的子…

使用groovy代码方式解开gradle配置文件神秘面纱

来到这里的是不是都有以下疑问&#xff1a; 1.build.gradle配置文件结构好复杂啊&#xff0c;怎么记&#xff1f; 2.内部是怎么进行分析和执行的&#xff1f; 3.为什么可以在配置文件里面写groovy代码&#xff0c;怎么识别的&#xff1f; 4.怎么才能很方便的记住和快速上手…

空口协议Eapol、802.11 Action、802.11 BAR 和 802.11BA、802.11 Encrypted Data讲解

如下报文 可以看到,除了有之前开放认证的报文之外,还多了 EAPOL 次握手的报文。另外,还有其他几种类型的报文:802.11 Action、802.11 BAR 和 802.11BA、802.11 Encrypted Data ​ 密匙认证协议EAPOL: EAP是Extensible Authentication Protocol的缩写,EAPOL就是(EAP…

Python搭建一个steam钓鱼网站,只要免费领游戏,一钓一个准

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 我们日常上网的时候&#xff0c;总是会碰到一些盗号的网站&#xff0c;或者是别人发一些链接给你&#xff0c; 里面的内容是一些可以免费购物网站的优惠券、游戏官网上可以免费领取皮肤、打折的游戏。 这些盗号网站统一的目…

go版本分布式锁redsync使用教程

redsync使用教程前言redsync结构Pool结构Mutex结构acquire加锁操作release解锁操作redsync包的使用前言 在编程语言中锁可以理解为一个变量&#xff0c;该变量在同一时刻只能有一个线程拥有&#xff0c;以便保护共享数据在同一时刻只有一个线程去操作。对于高可用的分布式锁应…

6招优化WordPress打开速度-让你的网站飞起来

为什么我们的WordPress网站比你的快&#xff1f; 我们的官网是使用WordPress框架搭建的&#xff0c;有没有发现我们的网站非常快&#xff0c;而你的WordPress网站比较慢呢&#xff1f;那是因为我们的网站经过了优化。 WordPress 很慢&#xff1f; 为什么很多人都会觉得 Word…

【C语言进阶:指针的进阶】函数指针

本章重点内容&#xff1a; 字符指针指针数组数组指针数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组面试题的解析⚡函数指针 函数指针&#xff1a;指向函数的指针。 通过之前的学习我们知道数组指针中存放的是数组的地址&#xff0c;那么函…