前端开发工程师——webpack

一.环境准备

npm init -y

npm i webpack webpack-cli -D

打包命令

npx webpack ./src/main.js --mode=development
//development开发模式
//production生产模式

npx webpack 

直接运行就行

二.加载器loader

在less/stylus/css/sass/images中添加适当的样式

例如:sass

.box3
  width: 100px
  height: 100px
  background-color: hotpink
.box4 {
    width: 100px;
    height: 100px;
    background-color: black;
}

main.js

import count from "./js/count"
import sum from "./js/sum"
// 要打包就必须引入css
import "./css/index.css"
// 引入less
import "./less/index.less"
// 引入sass
import "./sass/index.sass"
import "./sass/index.scss"

// 引入styl
import "./stylus/index.styl"

console.log(count(2,1));
console.log(sum(1,2,3,4));

webpack. config.js配置文件

const path = require("path");//node.js

module.exports = {
    // 入口
    entry: "./src/main.js",//相对路径
    // 输出
    output: {
        // path文件的输出路径,是绝对路径
        //__dirname表示当前文件的文件夹
        path: path.resolve(__dirname, "dist"),
        // 文件名
        filename: "main.js",
    },
    // 加载器
    module: {
        rules: [
            //loader的配置
            // 处理css加载器
            {
                test: /\.css$/,

                use: ['style-loader', 'css-loader']
            },
            // 安装less和less-loader
            // npm install less less-loader --save-dev
            {
                test: /\.less$/,
                use: ["style-loader","css-loader","less-loader"],
            },
            // 安装sass-loader
            // npm install sass-loader sass webpack --save-dev
            {
                test: /\.s[ac]ss$/i,
                use: ["style-loader","css-loader","sass-loader"],
            },
            // 处理styl资源
            //npm i stylus-loader -D
            {
                test: /\.styl$/,
                use: ["style-loader","css-loader","stylus-loader"],
            },
            // 处理图片资源
            {
                test: /\.(png|jpe?g|gif|webp|svg)$/,
                type: "asset",
                parser: {
                    dataUrlCondition: {
                        // 小于10kb的图片转base64,优点:减少请求数量
                        maxSize: 10 * 1024,
                    },
                }
            },
        ]
    },
    // 插件
    plugins: [
        //plugins的配置

    ],
    // 模式
    mode: "development",
};

三.修改输出文件目录

在webpack. config.js配置文件

// 输出
    output: {
        // path文件的输出路径,是绝对路径
        //__dirname表示当前文件的文件夹
        path: path.resolve(__dirname, "dist"),
        // 入口文件打包输出的文件名
        filename: "static/js/main.js",
        // 自动清除上次打包的内容
        clean: true,
    },
// 处理图片资源
            {
                test: /\.(png|jpe?g|gif|webp|svg)$/,
                type: "asset",
                parser: {
                    dataUrlCondition: {
                        // 小于10kb的图片转base64,优点:减少请求数量
                        maxSize: 10 * 1024,
                    },
                },
                generator: {
                    // 输出图片的名称
                    // hash:10表示hash取前10位
                    filename: "static/images/[hash:10][ext][query]",
                }
            },

四.处理图标资源

 // 处理图标
            {
                test: /\.(ttf|woff2?)$/,
                type: "asset",
                parser: {
                    dataUrlCondition: {
                        // 小于10kb的图标转base64
                        maxSize: 10 * 1024,
                    },
                },
                generator: {
                    // 输出图标的名称
                    // hash:10表示hash取前10位
                    filename: "static/media/[hash:10][ext][query]",
                }
            },

五.eslint基本使用

配置文件

const ESLintPlugin = require('eslint-webpack-plugin');
plugins: [
        //plugins的配置
// npm install eslint-webpack-plugin --save-dev
        new ESLintPlugin({
            // 检测那些文件
            context: path.resolve(__dirname,"src"),
        }),

    ],

同级src,下面是文件内容

module.exports = {
    // 继承Eslint规则
    extends:["eslint:recommended"],
    env: {
        node: true,//启用node中的全局变量
        browser:true,//启用浏览器中的全局变量
    },
    parserOptions: {
        ecmaVersion: 6,
        sourceType: "module",
    },
    rules: {
        "no-var":2,//不能使用var定义变量
    }
}


六.babel基础用法

配置文件

下载babel

npm install -D babel-loader @babel/core @babel/preset-env

{
                test:/\.js$/,
                exclude:/node_modules/,
                use: {
                    loader:"babel-loader",
                    // options: {
                    //     presets:["@babel/preset-env"],
                    // },
                },
            },

babel.config.js文件

module.exports = {
    // 智能预设,能够编译es6语法
    presets:["@babel/preset-env"],
}

七.处理html资源

下载安装

npm install --save-dev html-webpack-plugin

配置文件引入

const HtmlWebpackPlugin = require('html-webpack-plugin');

plugins: [
        //plugins的配置
        // npm install eslint-webpack-plugin --save-dev
        new ESLintPlugin({
            // 检测那些文件
            context: path.resolve(__dirname,"src"),
        }),
        new HtmlWebpackPlugin({
            // 模板:以public/index.html文件创建新的html文件
            // 新的html文件特点:1.结构和原来一样,自动引入打包输出的结果
            template: path.resolve(__dirname,"public/index.html"),
        })

    ],

开发服务器 

npm install webpack-dev-server --save-dev

// 开发服务器
    devServer: {
        host: "localhost",//启动服务器域名
        port:3000,//启动服务器端口号
        open:true,//是否自动打开浏览器
    },

八.webpack高级 

SourceMap

表示可以把错误类型的代码映射出来

HMR (减少时间)

main.js

oneOf(提高打包速度)

include/exclude

 

多进程打包 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用MyBatis进行批量新增更新操作 ON CONFLICT

1.数据库增加uniques 2.mybatis <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"co…

社交网络安全:保护用户数据的Facebook实践

在数字化时代&#xff0c;社交网络安全成为了人们关注的焦点之一。作为全球最大的社交平台之一&#xff0c;Facebook一直在致力于保护用户数据安全和隐私。本文将探讨Facebook在社交网络安全方面的实践&#xff0c;以及它所采取的措施来保护用户数据的安全性。 1. 数据加密与隐…

Mysql搭建主从同步,docker方式(一主一从)

服务器&#xff1a;两台Centos9 用Docker搭建主从 使用Docker拉取MySQL镜像 确保两台服务器都安装好了docker 安装docker请查看&#xff1a;Centos安装docker 1.两台服务器都先拉取mysql镜像 docker pull mysql 2.我这里是在 /opt/docker/mysql 下创建mysql的文件夹用来存…

找出缺失的观测数据

代码实现&#xff1a; 在缺失的 n 个观测数据中&#xff0c;有 y 个观测数据是 x1&#xff0c;其余观测数据都是x int* missingRolls(int *rolls, int rollsSize, int mean, int n, int *returnSize) {int m rollsSize;int sum mean * (n m);int missingSum sum;for (int i…

Kibana(一张图片胜过千万行日志)

Kibana&#xff08;一张图片胜过千万行日志&#xff09; Kibana是一个开源的分析和可视化平台&#xff0c;设计用于和Elasticsearch一起工作。 你用Kibana来搜索&#xff0c;查看&#xff0c;并和存储在Elasticsearch索引中的数据进行交互。 你可以轻松地执行高级数据分析&a…

修改组件库源码来获得符合需求的组件

项目需求多种多样&#xff0c;会出现开源组件库中的组件无法满足需求或者有 bug 的情况&#xff0c;可以区分以下情况&#xff0c;进行相应的处理。 以下示例以在 Vue2 中使用 Ant Design Vue 进行讲解。 样式修改 局部修改 这里我们以组件 Button 按钮为例&#xff0c;该组…

Python脚本必加代码:99%的程序员都忽视了这个细节!

文章目录 一、初识 if __name__ __main__二、__name__ 和 __main__ 是什么&#xff1f;三、实战讲解四、实际应用场景测试代码提高代码可重用性避免不必要的执行 五、深入理解和更多用法使用 argparse 解析命令行参数使用 unittest 进行单元测试使用 multiprocessing 创建子进…

03:PostgreSQL逻辑结构(表空间、数据库、模式、表、索引)

环境规划&#xff1a; 操作系统&#xff1a;CentOS 7.9 64bitPostgreSQL 版本&#xff1a;16.x 或 15.x安装用户&#xff1a;postgres软件安装目标路径&#xff1a;/usr/pgsql-<version>数据库数据目录&#xff1a;/pgdata 目录 表空间Tablespace 默认表空间 手动创建…

Jenkins--从入门到入土

Jenkins–从入门到入土 文章目录 Jenkins--从入门到入土〇、概念提要--什么是CI/DI&#xff1f;1、CI&#xff08;Continuous Integration&#xff0c;持续集成&#xff09;2、DI&#xff08;DevOps Integration&#xff0c;DevOps 集成&#xff09;3、解决的问题 一、Jenkins安…

【代码随想录】【算法训练营】【第20天】 [654]最大二叉树 [617]合并二叉树 [700]二叉搜索树中的搜索 [98]验证二叉搜索树

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 19&#xff0c;一个愉快的周日~ day 20&#xff0c;一个悲伤的周一~ 题目详情 [654] 最大二叉树 题目描述 654 最大二叉树 解题思路 前提&#xff1a;构造二叉树 思路&#xff1a;寻找根节…

基于Django框架的项目搭建后台首页

(1). 创建数据库 osdb 进入MySQL数据库中&#xff0c;创建一个数据库名为&#xff1a;osdb 通过数据表结构来创建数据表&#xff1a; -- 员工信息表 CREATE TABLE user (id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 员工账号id,username varchar(50) DEFAULT NULL C…

路径规划 | 图解粒子群(PSO)算法(附ROS C++仿真)

目录 0 专栏介绍1 从鸟群迁徙说起2 粒子群算法基本概念3 粒子群算法流程4 粒子群算法ROS实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&#xff1b;局部规…

跨境热销爆款货源哪里找?选品工具不能少

通常&#xff0c;跨境电商找热销货源的几种方法&#xff1a; 1、使用Google Trends、亚马逊销售排行等来追踪和分析当前的市场趋势和热门产品&#xff1b; 2、关注社交媒体、行业论坛和博客等渠道&#xff0c;以获取最新的市场信息和消费者反馈&#xff1b; 3、在主流的跨境…

Oracle实践|内置函数之数学型函数

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

CDC 数据实时同步入湖的技术、架构和方案(截至2024年5月的现状调研)

近期&#xff0c;对 “实时摄取 CDC 数据同步到数据湖” 这一技术主题作了一系列深入的研究和验证&#xff0c;目前这部分工作已经告一段落&#xff0c;本文把截止目前&#xff08;2024年5月&#xff09;的研究结果和重要结论做一下梳理和汇总。为了能给出针对性的技术方案&…

基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)

癫痫是一种由大脑神经元突发性异常放电导致的大脑功能性障碍疾病。据世界卫生组织统计&#xff0c;全球约有7000万人患有癫痫。癫痫患者在发病时呈现肌肉抽搐、呼吸困难、意识丧失等症状。由于癫痫发作的偶然性&#xff0c;患者极有可能在高空、驾驶、游泳等危险情况下发病并丧…

掌握栈回溯意味着什么?

来源&#xff1a;公众号【鱼鹰谈单片机】 作者&#xff1a;鱼鹰Osprey ID &#xff1a;emOsprey 历时两个月&#xff08;1/3&#xff09;&#xff0c;第一个完成电子表项目的学员出现了&#xff0c;并且顺利的掌握了栈回溯技巧&#xff0c;在工作中快速定位了一个任务异常挂起…

【STM32】 独立看门狗配置方法

什么是看门狗 看门狗&#xff08;watchdog&#xff09;指的是一种监控系统或程序&#xff0c;用于定期检测和监控其他系统或程序的运行状态&#xff0c;并在出现问题或故障时采取相应的措施。它可以是硬件设备&#xff0c;也可以是软件程序。 在计算机领域中&#xff0c;看门狗…

全国青少年信息素养大赛历届复赛、国赛真题

由于2024年信息素养大赛初赛比较简单&#xff0c;特别是Scrath图形化编程和Python编程&#xff0c;八九分钟及半个小时内交卷的也多&#xff0c;100分及80分以上的比较多&#xff0c;&#xff08;各赛区复赛晋级根据两个指标进行排名&#xff0c;初赛成绩和答题用时。首先根据分…

AC/DC电源模块:提供高质量的电力转换解决方案

BOSHIDA AC/DC电源模块&#xff1a;提供高质量的电力转换解决方案 AC/DC电源模块是一种电力转换器件&#xff0c;可以将交流电转换为直流电。它通常用于各种电子设备和系统中&#xff0c;提供高质量的电力转换解决方案。 AC/DC电源模块具有许多优点。首先&#xff0c;它能够提…