












Published: · LastMod: August 21, 2022 · 2223 words
webpack.config.js
入口文件,构建项目的必要条件
https://webpack.docschina.org/configuration/entry-context/
构建结果输出配置
https://webpack.docschina.org/configuration/output/
构建环境配置
webpack5 整个构建过程
webpack5中有一项重要的更新就是缓存,对于大型依赖构建的提速明显
配置config中的cache字段
| |
缓存到系统中的有效时间,默认一个月
webpack在构建打包的过程中,会有许多需要分析代码AST的工作,比如babel-loder、ts-loader、eslint-loader等操作, webpack5中会将上次构建的结果进行缓存,下次再需要构建结果时,会比对上次的结果,如果可以使用就会直接使用上次的结果,减少重复计算
SplitChunksPlugin是webpack提供的分包插件,可以配置分包策略决定最终的bundle产物
最小引用次数,将频繁引用的文件打包
webpack解析的基础目录
{ [key]: string }
webpack解析的入口文件
引入文件
指定最终输出的bundle的文件名
依赖的chunk模块名称,可以是一个字符串或者字符串数组
创建一个异步加载模块
动态入口,可以传入一个函数,或者返回一个Promise
webpack的打包模式development | production | none
最终bundle输出配置
string = '[hash][ext][query]'
静态文件名的输出规则
异步加载的chunk,默认true
导出时插入对应的注释,配合output.library和output.libraryTarget一起使用
兼融非现代浏览器,script上加上utf-8表示
非入口的chunk文件命名规则,默认[id].js
chunk的输出格式, 默认false
string: 'array-push' | 'commonjs' | 'module' | <any string>
chunk 请求到期之前的毫秒数,默认为 120000
加载 chunk 的全局变量, 默认string = 'webpackChunkwebpack'
加载chunk的方法
string: 'jsonp' | 'import-scripts' | 'require' | 'async-node' | 'import' | <any string>
配置webpack打包生成文件之前的操作,是否清除output目录
boolean { dry?: boolean, keep?: RegExp | string | ((filename: string) => boolean) }
检查输入目录中是否有相同的文件,有就不再重新生成,默认true,
是否启用跨域加载chunk,通过jsonp的形式添加脚本,默认false
//
//
//
允许入口点使用的 chunk 加载类型列表。
输出 bundle 的名称
| 模板 | 描述 |
|---|---|
| [file] | filename 和路径,不含 query 或 fragment |
| [query] | 带前缀 ? 的 query |
| [fragment] | 带前缀 # 的 fragment |
| [base] | 只有 filename(包含扩展名),不含 path |
| [filebase] | 同上,但已弃用 |
| [path] | 只有 path,不含 filename |
| [name] | 只有 filename,不含扩展名或 path |
| [ext] | 带前缀 . 的扩展名(对 output.filename 不可用) |
输出library时,注册到全局对象的this, 默认self
生成 hash 时使用的编码方式
散列摘要的前缀长度。默认20
散列算法,默认’md4'
默认加盐值
自定义热更新 chunk 的文件名。默认[id].[fullhash].hot-update.js
只在 target 设置为 'web' 时使用,用于加载热更新(hot update)的 JSONP 函数。
自定义热更新的主文件名(main filename)。[fullhash] 和 [runtime] 均可作为占位符。
默认[runtime].[fullhash].hot-update.json
是否输出自执行代码
内部import的名称
输出一个库
库名字
库类型,类型默认包括 'var'、'module'、'assign'、'assign-properties'、'this'、'window'、'self'、'global'、'commonjs'、'commonjs2'、'commonjs-module'、'commonjs-static'、'amd'、'amd-require'、'umd'、'umd2'、'jsonp' 以及 'system',除此之外也可以通过插件添加。
指定哪一个导出应该被暴露为一个库。
库添加的注释
当使用 output.library.type: "umd" 时,将 output.library.umdNamedDefine 设置为 true 将会把 AMD 模块命名为 UMD 构建。否则使用匿名 define。
System.register 的模块以模块类型输出 JavaScript 文件,默认false
输出目录,默认path.join(process.cwd(), 'dist')
是否打印模块信息,默认true
以 runtime(运行时) 或 loader(载入时) 所创建的每个 URL 为前缀
这个配置项允许使用自定义 script 类型加载异步 chunk,默认false
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。