【webpack开发环境下的配置】

news/2024/8/26 13:03:39 标签: webpack

webpack_0">webpack的五大核心

  • entry入口
  • output输出
  • loader: 处理非js文件(相当于翻译webpack本身只能理解js)
  • Plugins: 用于其他功能(压缩,优化等)
  • mode: 模式 主要有开发模式和生产环境

实践

  1. 下载包

npm i webpack webpack-cli -D

  1. 全局安装,否则找不到webpack命令

sudo npm i webpack webpack-cli -g

webpackconfigjs_17">webpack.config.js文件框架

// webpack.config.js文件
/**
 * 作用:当运行webpack指令时,会加载里面的配置
 * 所有的构建工具都是基于nodejs平台运行的,模块化默认采用commonjs
 */
// 用来拼接绝对路径
const { resolve } = require('path')
module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'build.js',
        // __dirname:代表当前文件目录的绝对路径
        path: resolve(__dirname,'build')
    },
    // loader配置
    module: {
        // 详细的loader配置
        rules: [
        ]
    },
    plugins: [
        // 详细的插件配置
    ],
    // 模式
    mode: 'development'
}

html文件处理

  1. 下载包

npm i html-webpack-plugin -D

  1. 配置
const HtmlWebpackPlugin = require('html-webpack-plugin');
 plugins: [
        // 详细的插件配置
        // 不加参数,默认创建一个空的html,自动引入打包输出的所有资源
      new HtmlWebpackPlugin({
         template: './src/index.html', // 以该./src/index.html文件为模版创建一个html,并自动引入打包输出的所有资源
      })  
    ],

样式处理

css文件

  1. 下载包

npm i css-loader style-loader -D

  1. webpack配置
//webpack5
module: {
  // 详细的loader配置
  rules: [
    {
      test: /\.css$/,  //匹配那些文件,这里注意下webpack的版本,4版本需要加’‘,'/\.css$/'
      use:[ //使用那些loader处理
        //  use数组中loader执行顺序:从下往上执行
        'style-loader', // 创建style标签,将js中的样式资源插入,添加到head中生效
        'css-loader', // 将css文件变成commonjs模块加入js中,里面的内容是样式字符串
      ]
    }
  ]
},

less文件

  1. 下载包

npm i css-loader style-loader less less-loader -D

  1. webpack配置
//webpack5
module: {
  // 详细的loader配置
  rules: [
    {
      test: /\.css$/,  //匹配那些文件,这里注意下webpack的版本,4版本需要加’‘,'/\.css$/'
      use:[ //使用那些loader处理
        //  use数组中loader执行顺序:从下往上执行
        'style-loader', // 创建style标签,将js中的样式资源插入,添加到head中生效
        'css-loader', // 将css文件变成commonjs模块加入js中,里面的内容是样式字符串
      ]
    },
    {
      test: /\.less$/,//匹配那些文件,这里注意下webpack的版本,4版本需要加’‘,'/\.css$/'
      use: [
        'style-loader',// 创建style标签,将js中的样式资源插入,添加到head中生效
        'css-loader', // 将css文件变成commonjs模块加入js中,里面的内容是样式字符串
        'less-loader', // 将less文件编译成css文件
      ]
    }
  ]
},

图片处理

  1. 下载包

npm i url-loader file-loader -D // webpack5不需要

  1. webpack中的配置
{ 
  test: /\.(jpg|png|gif|jpeg)$/, //处理图片
  //  webpack5写法
  type: 'asset',
    parser: {
      dataUrlCondition: {
        maxSize: 8 * 1024 // 图片小于8kb,就会被base64处理,base64图片优点:减少请求数量(减轻服务器压力) 缺点:图片体积更大(文件请求速度慢),这个根据实际情况设置,一般是处理(12kb以下)
      }
    },
      generator: {
        filename: 'static/[hash:10][ext][query]', // 重命名图片的名字[hash:10] 保留hash值的前10位,[ext] 保留图片原扩展名[query]添加之前的query参数
      },
        // webpack4 写法
        //  loader:'url-loader',  // 只使用一个loader可以用这种写法,多个loader用use数组
        //  options: {
        //   limit: 8 * 1024,  
        //    esModule: fasle,  // url-loader默认使用es6模块解析,而html-loader引入图片是commonjs,导致图片解析出错,所以得关闭url-loader的es6模块化
        // },
}

html中图片img

  1. 下载包

npm i html-loader -D

  1. webpack中的配置
{
   test: /\.html$/,
   loader: 'html-loader', // 处理html文件的img(负责引入img,从而被处理)
}

其他资源处理

其他资源: 指不需要处理的资源如字体图标

{
    // 打包其他资源
    exclude: /\.(css|js|html|png|jpg|less|json)/, //对应排除的文件根据需求修改
    type: 'asset/resource',
    generator: {
      filename: 'static/[hash:10][ext][query]', // 重命名图片的名字[hash:10] 保留hash值的前10位,[ext] 保留图片原扩展名[query]添加之前的query参数
    }

}

devServer

  1. 作用

// 开发服务器, devServer: 自动化(自动编译,自动打开浏览器,自动刷新浏览器~~)
// 特点:只会在内存中编译打包,不会有任何输出
// 启动devServer指令为:npx webpack-dev-server

  1. 下载包

npm i -D webpack-dev-server webpack-cli webpack

  1. 配置
devServer: { 
    // 这里检测的是源文件中的index.html
     static: './src/index.html', // 注意这里不能检测打包后的index.html文件,因为webpack-dev-server 在编译之后不会写入到任何输出文件。而是将 bundle 文件保留在内存中,所以打包后的index.html文件是没有任何变化的,所以检测他浏览器不能自动刷新
     compress: true,
     port: 3000,
     open: true
},
  1. 运行项目

npx webpack-dev-server | webpack serve

以上两个命令都可以,任选一个就行


http://www.niftyadmin.cn/n/5558064.html

相关文章

抖音seo短视频矩阵源码系统开发搭建----开源+二次开发

抖音seo短视频矩阵源码系统开发搭建 是一项技术密集型工作,需要对大数据处理、人工智能等领域有深入了解。该系统开发过程中需要用到多种编程语言,如Java、Python等。同时,需要使用一些框架和技术,如Hadoop、Spark、PyTorch等&am…

前端 css3 媒体查询实现 响应式布局

什么是媒体查询? 媒体查询(Media Query)是CSS3新语法。 使用 media 查询,可以针对不同的媒体类型定义不同的样式media 可以针对不同的屏幕尺寸设置不同的样式当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高…

Linux C++ 058-设计模式之解释器模式

Linux C 058-设计模式之解释器模式 本节关键字:Linux、C、设计模式、解释器模式 相关库函数: 概念 解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。 解释器模式用于构建一…

opencv—常用函数学习_“干货“_5

目录 十五、图像分割 简单阈值分割 (threshold) 自适应阈值分割 (adaptiveThreshold) 颜色范围分割 (inRange) 分水岭算法 (watershed) 泛洪填充 (floodFill) GrabCut算法 (grabCut) 距离变换 (distanceTransform) 最大稳定极值区域检测 (MSER) 均值漂移滤波 (pyrMean…

MySQL面试题-重难点

mysql中有哪些锁?举出所有例子,各个锁的作用是什么?区别是什么? 共享锁:也叫读锁,简称S锁,在事务要读取一条记录时,先获取该记录的S锁,别的事务也可以继续获取该记录的S…

上传文件给Ubuntu服务器

在Ubuntu上使用scp命令进行文件上传(或下载)是非常方便的。scp命令可以在本地和远程主机之间安全地复制文件和目录。 上传文件到远程主机 假设您要将本地文件 local_file.txt 上传到远程主机 usernameremote_host:/remote/directory/,可以使…

微服务实战系列之玩转Docker(二)

前言 上一篇,博主对Docker的背景、理念和实现路径进行了简单的阐述。作为云原生技术的核心之一,轻量级的容器Docker,受到业界追捧。因为它抛弃了笨重的OS,也不带Data,可以说,能够留下来的都是打仗的“精锐…

.Net--CLS,CTS,CLI,BCL,FCL

,所以.NET专门为此参考每种语言并找出了语言间的共性,然后定义了一组规则,开发者都遵守这个规则来编码,那么代码就能被任意.NET平台支持的语言所通用。 而与其说是规则,不如说它是一组语言互操作的标准规范&#xff0c…