webpack教程(一)

一、webpack简介及体验

1、webpack简介

中文官网

Webpack 是一个静态模块打包工具,从入口构建依赖图,打包有关的模块,最后用于展示你的内容。

2、webpack作用

把静态模块内容,压缩、转译、打包等(前端工程化)

  • 把 less/sass 转成 css 代码

  • 把 ES6+ 降级成 ES5 等

  • 支持多种模块文件类型,多种模块标准语法

当然这里有小伙伴会有疑问:为何不学 vite?

现在很多项目还是基于 Webpack 来进行构建的,所以还是要掌握 Webpack 的使用

3、Webpack的五个核心概念

  • Entry(从哪里开始):入口指示Webpack以哪个文件为入口起点点开始打包,分析构建内部依赖图。
  • Output(打包到哪里去):输出指示Webpack打包后的资源bundles输出到哪里去,以及如何命名
  • Loader(处理非js文件的翻译工具):Loader让Webpack能够去处理那些非Javascript文件(因为Webpack自身只理解Javascript)
  • Plugins(一些比较实用的功能,比如代码压缩等):插件可以用于执行范围更广的任务,插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量等。
  • Mode(主要是生产环境和开发环境的区别):模式指示Webpack使用相应模式的配置。

二、webpack安装流程

1、安装命令

npm install --save-dev webpack

2、如果你使用webpack v4+ 版本,并且想要在命令行中调用webpack,还需要安装CLI

npm install --save-dev webpack-cli
npx webpack init ./ --force --template=default

   安装完毕后可以查看我们src中index.js

   webpack的版本号是跟随node进行改变的(因为webpack是基于nodeJS)

三、webpack主流程

流程类

与打包流程强相关的配置项有:

  • 输入输出:
    • entry:用于定义项目入口文件,Webpack会从这些入口文件开始按图案找出所有项目文件;
    • context:项目执行上下文路径;
    • output:配置产物输出路径、名称等;
  • 模块处理:
    • resolve:用于配置模块路径解析规则,可用于帮助Webpack更精准、高效的找到指定模块
    • module:用于配置模块加载规则,例如针对什么类型的资源需要使用那些Loader进行处理
    • externals:用于声明外部资源,Webpack会直接忽略这部分资源,跳过这些资源的解析,打包操作
  • 后处理:
    • optimization:用于控制如何优化产物包体积,内置Dead Code Elimination、Scope Hoisting、代码混淆、代码压缩等功能
    • target:用于配置编译产物的目标运行环境,支持web、node、electron等值,不同值最终产物会有所差异
    • node:编译模式短语,支持development、production等值,可以理解为一种声明环境的短语

这里的重点是,Webpack 首先需要根据输入配置(entry/eantext)找到项日入口文件;之后根据按模块处理(modu1e/resolve/externals 等)所配置的规则逐一处理模块文件,处理过程包括转译、依赖分析等;模块处理完毕后,最后再根据后处理相关配置项( optimization/target 等)合并模块资源、注入运行时依赖、优化产物结构等。

这些配置项与打包流程强相关,建议学习时多关注它们对主流程的影响,例如 entry决定了项目入口,而output 则决定产物最终往哪里输出;resolve 决定了怎么找到模块,而 module 决定了如何解读模块内容等等。

工具类

除了核心的打包功能之外,Webpack还提供了一系列用于提升研发效率的工具,大体上可划分为:

  • 开发效率类:
    • watch:用于配置持续监听文件变化,持续构建
    • dectool:用于配置产物Sourcemap 生成规则
    • devServer:用于配置与HMR强相关的开发服务器功能
  • 性能优化类:
    • cache:Webpack 5 之后,该项用于控制如何缓存编译过程信息与编译的结果
    • performance:用于配置当产物大小超过阈值时,如何通知开发者
  • 日志类:
    • stats:用于精确的控制编译过程的日志内容,在做比较细致的性能调式时非常的有用
    • infrastructureLogging:用于控制日志输出方式,例如可以通过该配置将日志输出到磁盘文件
  • 等等

四、webpack编译 

  • css
  • JS
  • 图片、svg

entry:

        一个页面对应一个入口,一般单页面只需要一个入口文件就好了

output

module

module和chunk的区别:

        项目中的每一个文件,可以理解为每一个chunk,打包出来的文件叫做module

地址:

Less中文逛网

Sass中文官网

编译Less案例

module: {
        rules: [
            {
                test: '/\.css$/i',
                use: ['style-loader', 'css-loader']
            }
        ]
    }

style-loader和css-loader的区别

  1. webpack的加载顺序是从右边向左的
  2. css-loader会把css文件变成js
  3. style-loader会把js变成style标签然后插入到页面中

webpack打包命令

npx webpack build

如何配置Less,在打包解析成CSS

const path = require('path');
//webpack编译的css相关的js变成单独的css文件
const MinCssExtractPlugin = require('mini-css-extract-plugin');



module.exports = {
    //入口文件
    entry: './src/index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
    },
    mode: 'production',
    plugins: [new MinCssExtractPlugin()],
    module: {
        rules: [
            {
                test: /\.less$/i,
                use: [
                    MinCssExtractPlugin.loader,
                    'style-loader',//会对我们的样式进行压缩在main.js文件中
                    'css-loader',
                    'less-loader'
                ]
            }
        ]
    }
}

webpack教程篇关于使用webpack进行前端项目构建的文章。它包含了webpack的安装、配置、加载器和插件的使用等内容。在教程中,作者介绍了webpack与其他构建工具(如grunt和gulp)的区别,并详细说明了webpack的概念和基本用法。教程还提供了些示例代码和实践步骤,帮助读者更好地理解和应用webpack。其中,引用\[1\]提供了关于webpack的基本命令和配置的使用方法,引用\[2\]介绍了webpack的入口、出口、加载器和插件的概念,引用\[3\]则介绍了如何使用插件来提取和加载CSS文件。如果你对webpack感兴趣,这篇教程会给你提供些有用的指导和实践经验。 #### 引用[.reference_title] - *1* [webpack详细教程](https://blog.csdn.net/weixin_41842236/article/details/103132674)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [webpack基础教程](https://blog.csdn.net/k0101jcj/article/details/106825691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值