【webpack】webpack探索

news/2024/10/23 7:24:31/

webpack是什么

构建工具

初始化

pnpm init -y

生成一个package.json文件

为什么使用webpack

  • 很难直观的去感受到你的某个文件依赖了哪些外部车或者其他组件
  • 如果一个依赖没有加上或者说顺序故错了,整个项目可能都步起来
  • 如果一个依赖已经装了但是没有用。试览器会产生额外的开销去下骤不必要的代码

打包分析

配置文件

module.exports = {mode: '',entry: {// ...},module: {rules: [// ...]},plugins: [],devServe: {},resolve: {extensions:['.ts', '.js', '.cjs', '.json'] //配置文件引入时省略后缀名},
}

entry(入口)

字符串形式

module.exports = {entry: './index.ts'
}

数组形式(多个入口)

module.exports = {entry: ['./index.ts','./a.ts']
}

对象形式

module.exports = {entry: {main: {filename: 'taget.js', //输入文件名import: './index.ts', //指定入口文件runtime: 'mainRuntime', //指定一个运行时环境,如果不存在就创建这个运行时环境// dependOn: 'mainRuntime', //指定一个运行时环境,如果不存在也不会创建这个运行时环境,不能与runtime同事存在},// 多个入口test: {filename: 'target.js', //输入文件名import: './index.ts', //指定入口文件}},output: {clean: true, //每次打包前清楚dist目录}
}

出口(output)

module.exports = {entry: {main: {filename: 'target.js', //输入文件名import: './index.ts', //指定入口文件runtime: 'mainRuntime', //指定一个运行时环境,如果不存在就创建这个运行时环境// dependOn: 'mainRuntime', //指定一个运行时环境,如果不存在也不会创建这个运行时环境,不能与runtime同事存在},//多入口test: './a.ts',},output: {clean: true, //每次打包前清除打包输出目录path: path.resolve(__dirname, 'app'), //指定输出目录名字filename: '[name].[contenthash:5].js', //指定输出文件名,name表示入口指定的文件名,不指定默认输入为入口时指定的文件名,hash表示给文件名加上一个hash}
}

深入理解devDependencies和dependencies

devDependencies(生成依赖)

dependencies(开发依赖)

loaders

我们之间在js中引入css文件是原生js所接受的吗?
答案是不可以的,我们js中引入css文件,完全是构建工具(webpack)loaders的功劳。

loaders 处理css

  • 安装css-loader&style-loader
pnpm i css-loader style-loader -D
  • 配置文件中处理
const path = require('path')
/**@type {import('webpack'.Configuration)} */
module.exports = {entry: './index.ts',module: {rules: [// css loader{test: /\.css$/,use: [{ loader: 'style-loader' },{loader: 'css-loader',options: {modules: true,},},// sass处理// { loader: 'sass-loader' },],},],},
}

loaders 处理less

  • 安装css-loader&style-loader&less&less-loader
pnpm i less less-loader -D
  • 配置文件中处理
const path = require('path')
/**@type {import('webpack'.Configuration)} */
module.exports = {entry: './index.ts',module: {rules: [// css loader{test: [/\.css$/, /\.less$/],use: [{ loader: 'style-loader' },{loader: 'css-loader',options: {modules: true,},},// less处理{ loader: 'less-loader' },],},],},
}

webpack 处理ts

  • 安装typescript&ts-loader
pnpm i typescript ts-loader -D
  • 配置文件中处理
const path = require('path')
/**@type {import('webpack'.Configuration)} */
module.exports = {entry: './index.ts',resolve: {extensions:['.ts', '.js', '.cjs', '.json'] //配置文件引入时省略后缀名},module: {rules: [// css loader{test:  /\.ts/,use: [// ts-loader{ loader: 'ts-loader' },],},],},
}

插件


http://www.ppmy.cn/news/555539.html

相关文章

Rust 原始类型之数组array内置方法

目录 数组 array 声明 访问 引用 Reference 切片 Slice 方法 题目实例 数组 array 在 Rust 中,数组是一种固定大小的数据结构,用于存储具有相同数据类型的元素的有序集合。 “固定大小”是指数组中的元素的类型和数量确定,也就确定了…

llt自发光_Luminox F-22猛禽战斗机9270飞行系列手表

Luminox 雷美诺时推出F-22猛禽战斗机9270 飞行系列手表.雷美诺时创立于1989年,首创Luminox Light Technology(LLT)光学技术,在不需电力及吸收外来光线的情况下能持续自我发光25年。于1993年,应美国海豹突击队(U.S. NAVY SEALs)需求设计出潜水…

llt自发光_Luminox 全新「SR-71 Blackbird」黑色限量版腕表

原标题:Luminox 全新「SR-71 Blackbird」黑色限量版腕表 据悉1976年7月28日,Blackbird创下了飞机史上最快飞行时速与最高飞行高度的双项纪录。时至今天,这两项纪录仍未被打破。今季 Luminox(鲁美诺斯)为纪念美国空军这枚最具代表性的战机&…

Java项目使用JSON处理中文乱码和Date格式

JSON中文乱码 如果出现乱码,我们需要设置他的编码格式为utf-8,以及它返回的类型,通过RequesMapping的produces属性来实现,代码如下 produces:指定响应体返回类型和编码 JSON处理Date格式 RequestMapping(value "/date1" )ResponseBodypublic String date1() thr…

python:并发编程(二十六)

前言 本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇八,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并…

Qt设置软件启动动画(支持图片和视频俩种方式)

目录 软件启动动画效果静态背景动态背景 程序启动动画QSplashScreen启动时加载静态图片启动时加载视频动画将启动动画置于所有窗口顶层 软件启动动画效果 先来看效果。下面录制了加载图片和gif动图的俩种效果。 静态背景 动态背景 这里我加载了一个gif的动图,你也…

也谈QQ美女找茬外挂的编写

不久前发表在首页的QQ美女找茬(外挂)学习笔记一文让我深受启发,我看了该文章后,也自己动手实现了一个外挂,效果挺不错的。请看截图:从图中可以看出,我没有让结果显示在原游戏窗口中,…

制作联众找茬外挂

制作外挂,首先要做一个鼠标的钩子,这个大家应该都知道.以下简单描述一下 SetWindowsHookEx 装载钩子 UnHookWindowsHookEx 卸载钩子 示例 hHk : SetWindowsHookEx(WH_MOUSE,MouseHookProc,Hinstance,0); 写一个处理函数function MouseHookProc,将需要的鼠标信息通过SendMe…