type
status
date
slug
summary
tags
category
icon
password

entry

entry指定webpack开始创建依赖图的起点。在多个入口起点的应用程序中,每个入口起点都会创建一个依赖图。

output

output告诉webpack在哪里输出它所创建的bundles,以及如何命名这些文件。

loader

loader让webpack能够处理那些非JavaScript文件(webpack自身只能处理JavaScript)。loader可以将所有类型的文件转换为webpack能够处理的有效模块。

常用的Webpack Loader

  • css-loader:让Webpack能够加载并解析CSS文件。
  • style-loader:将CSS转换为可在DOM中使用的样式。
  • less-loader和sass-loader:让Webpack能够加载并解析Less和Sass文件。
  • postcss-loader:'postcss-preset-env' 用来配置浏览器前缀。
  • babel-loader:将ES6+代码转换为ES5代码,以便在不支持ES6+的浏览器中运行。一般会用一些babel预设,如preset-react,ts等
  • vue-loader:用来编译 .vue 文件

webpack5资源模块

pulgin

plugin可以用于执行范围更广的任务。包括打包优化、资源管理和注入环境变量等。

HtmlWebpackPlugin

该插件会自动生成一个HTML文件,并将bundle文件自动注入到HTML文件中。可以自定义生成的HTML文件的模板和内容。

MiniCssExtractPlugin

该插件可以将CSS文件从bundle中提取出来,并单独生成一个CSS文件。这样可以避免将CSS打包进JS文件中,降低JS文件的大小。

CleanWebpackPlugin

该插件可以在每次构建之前清除上一次构建生成的文件。这样可以确保每次构建都是从零开始的,避免旧文件对构建结果产生影响。生产环境中使用

DefinePlugin

该插件可以在编译时将指定的变量替换成对应的值。比如可以将一些环境变量替换成开发环境或生产环境的值,从而实现不同环境的构建。

UglifyJsPlugin

该插件可以压缩JS代码,减小JS文件的体积。可以配置一些选项来控制压缩程度和效果。

CopyWebpackPlugin

该插件可以将指定的文件或目录复制到构建目录中。比如可以将静态资源(图片、字体等)复制到构建目录中,以便在页面中使用。生产环境中使用

mode

通过选择 developmentproduction 或 none之中的一个,来设置 mode参数,可以启用 webpack 内置在相应环境下的优化。其默认值为 production

devtool

devtool用于控制是否生成以及如何生成source map。
常用的选项有:
  • eval:使用eval包裹模块代码,生成Data URL形式的source map,适用于开发环境。速度快,但不利于调试。
  • cheap-eval-source-map:使用eval包裹模块代码,在每行末尾添加//# sourceURL,适用于开发环境。速度快,且能够正确的映射到源码。
  • cheap-module-eval-source-map:与cheap-eval-source-map类似,但能够正确的映射到loader中的源码。
  • eval-source-map:使用eval包裹模块代码,生成source map文件,适用于开发环境。能够正确的映射到源码,但速度较慢。
  • cheap-source-map:不包含列信息,适用于生产环境。
  • cheap-module-source-map:与cheap-source-map类似,但能够正确的映射到loader中的源码。
  • source-map:最完整的source map,包含列信息,适用于生产环境。速度较慢,但是能够提供最完整的调试信息。
使用source map可以在浏览器中直接调试打包后的代码,而不需要去查看源代码。在开发环境中,建议使用速度快但映射不完整的source map,以提高开发效率。在生产环境中,建议使用速度慢但映射完整的source map,以便在出现问题时能够快速定位问题。

devServer

webpack-dev-server提供了一个简单的web服务器,并且能够实时重新加载。常用于开发环境。
  • contentBase:如果在webpack依赖中找不到文件,会到这个配置的文件夹中找。用来在开发环境替换 CopyWebpackPlugin,因为在开发环境没有必要进行拷贝。build的时候在拷贝就可以了。一般设置为 ./public
  • hmr(hot module replacement):对模块更新的时候不会对浏览器进行刷新,提高开发效率。 原理是通过socket 长连接进行通信。
  • host:打开域名
  • port:打开端口
  • open:默认打开浏览器
  • proxy:解决跨域问题

resolve

帮助更好的解析目录

环境分离

webpack-merge
vue基本语法vue3基本语法