美文网首页webpackalready
webpack五个核心模块

webpack五个核心模块

作者: _hider | 来源:发表于2022-04-14 16:58 被阅读0次
1. Entry

表示从哪个文件为入口起点开始打包,分析构建依赖图,可以定义单个或者多个,对应的,可以构建出单页或者多页应用,一般会跟output成对出现。

//单入口
entry: path.resolve(__dirname, "./src/index.js"),

//多入口
entry: {
  index1: path.resolve(__dirname, "./src/index1.js"),
  index2: path.resolve(__dirname, "./src/index2.js"),
}
2. Output

表示打包后的资源输出到哪里,以及命名规则,对应entry多文件入口的情况写法,如果要支持CJSUMDESMhtml页面直接引入,都是在这里通过配置实现的。
这里的[name].js表示出口的文件名和多入口的文件名保持一致,这样的话可以做到不同的页面加载不同的js页面。

//单出口
output: {
  filename: "index.js",
  path: path.resolve(__dirname, "dist"),
}

//多出口
output: {
  filename: "[name].js",
  path: path.resolve(__dirname, "dist"),
}
3. Loader

因为webpack只能处理js/json资源,不能处理类似css/img等其他资源,所以需要通过loader支持来处理其他资源,以下是常用的loader:

  • babel-loader:转换es6,es7的语法 --- 文件转换
  • css-loadercss文件的加载和解析 --- 文件转换
  • less-loader:将less转换成css --- 文件转换
  • ts-loaderTSJS --- 文件转换
  • file-loader :静态资源加载 --- 文件转换
  • raw-loader:静态资源内联,读取文件以字符串加载进入首屏,可用于移动端做适配时使用,比如在使用rem时,需要计算根节点的字体大小,计算大小要优先于单页应用的JS执行,可以把计算rem的代码以内联脚本的形式插入到html中优先执行。
  • thread-loader:多进程打包提高打包速度 --- build优化
4. Plugins

Plugins可以用于执行范围更广的任务,插件的范围包括,从打包优化到压缩,到定义环境变量等,以下是常用的Plugins

  • CommonsChunkPlugin:将chunk相同的模块代码提取成公共JSchunkwebpack运行时的各个文件一个状态,之后会组合成最终产物bundle
  • CleanWebpackPlugin:清理构建目录
  • ExtractTextWebpackPlugin:将cssbundle文件中提取成一个独立的css文件
  • CopyWebpackPlugin:文件或者目录拷贝
  • HtmlWebpackPlugin:创建html承载bundle,最终文件无论是JS还是css都需要html来承载展示。
5. Mode

指的是webpack使用相应模式的配置,它有以下两个选项:
(1)development,开发环境,它会默认开启以下选项:

  • NamedChunksPlugin :当开启 HMR 的时候,显示更新包的名字。
  • NamedModulesPlugin:当开启 HMR 的时候,显示更新包的相对路径。

(2)production,生产环境,它会默认开启以下选项:

  • FlagDependencyUsagePlugin:编译时标记依赖 --- tree-shaking相关
  • FlagIncludedChunksPlugin:防子chunks多次加载 --- tree-shaking相关
  • ModuleConcatenationPlugin:作用域提升(scope hosting) --- scope hosting
  • NoEmitOnErrorsPlugin:在输出阶段时,遇到编译错误跳过 --- 编译优化
  • OccurrenceOrderPlugin:给经常使用的ids更短的值 --- 编译优化
  • SideEffectsFlagPlugin:识别package.json或者module.rulessideEffects标志(纯的ES2015模块),安全地删除未用到的export导出 --- tree-shaking相关
  • UglifyJsPlugin:删除未引用代码,并压缩 --- 代码优化

相关文章

  • webpack-compiler篇

    1、webpack核心模块——compiler Compiler模块是 webpack 的支柱引擎,它通过CLI或...

  • webpack-plugin篇

    2、webpack核心模块——tapable tapable 是 webpack 的一个核心工具,但也可用于其他地...

  • webpack配置

    webpack核心概念: 入口(entry) 指定webpack开始构建的入口模块,从该模块开始构建并计算出直接或...

  • Webpack 知识梳理

    1. Webpack 简介及相关知识 Webpack —— JavaScript应用模块打包工具。 1.1 核心概...

  • 初识webpack

    1 webpack是什么? Webpack是一个开源的JavaScript模块打包工具,其最核心的功能是解决模块之...

  • webpack初学概念

    webpack概念:webpack是现代 JavaScript 应用程序的静态模块打包器 核心概念 1.ent...

  • Webpack 入门

    一、什么是Webpack? 作为其核心,webpack是一个静态模块捆绑器。在特定项目中,webpack将所有文件...

  • webpack1

    webpack是一个静态模块打包工具。webpack其中一个核心就是让我们可能进行模块化开发,并帮助我们处理模块间...

  • webpack4 安装实践

    1. 两个基本的依赖 首先webpack 项目的两个核心基础模块是webpack 和webpack-cli,这是w...

  • webpack打包代码实现

    webpack模块加载 异步模块加载 通过 import()实现指定模块的懒加载操作 懒加载的核心原理就是创建js...

网友评论

    本文标题:webpack五个核心模块

    本文链接:https://www.haomeiwen.com/subject/nfogsrtx.html