一.Webpack.config.js重点配置
1.entry入口
用来指定打包入口文件,默认为./src/index.js,需要注意的是,entry后面可以接数组和对象,如果是数组的话,那么不管你有几个入口文件,最后只打包成一个。如果是对象的话,那么最终打包是多文件,你有几个入口,就打几个包。
结果是这样的:
2.output出口
用于定义打包后文件的输出位置和格式,也就是对你的dist包,进行相应配置
01. filename: '[name].js'
- 含义:指定输出文件的名称格式。
[name]:这是一个占位符,表示 Webpack 会根据entry入口对象中的键名来动态生成文件名。例如,如果entry中定义了main和vendor两个入口,那么输出的文件名将是main.js和vendor.js。- 作用:确保每个入口文件(例如
main.js和vendor.js)都能生成独立的输出文件。
02. path: path.resolve(__dirname, 'dist')
- 含义:指定输出文件的目录路径。
__dirname:表示当前配置文件所在的目录(通常是项目的根目录)。dist:指定输出目录为dist文件夹。打包后的文件将存放在这个目录下。- 作用:将所有输出文件统一放置到
dist文件夹中。
03. libraryTarget: 'umd'
-
含义:指定打包后的库的导出格式。
-
umd:Universal Module Definition(UMD)是一种兼容 CommonJS、AMD 和浏览器全局变量的模块定义方式。 -
作用:使得打包后的代码可以在多种环境中使用,包括:
- Node.js:CommonJS 规范。
- 浏览器:全局变量或 AMD 规范。
- 其他模块系统:如 ES 模块(ESM)。
-
适用场景:如果你的项目是一个库(library),并且希望在不同环境中都能被引入,使用
umd是非常合适的。
04. library: '[name]'
- 含义:指定打包后的库的名称。
[name]:同filename中的[name],表示根据入口对象的键名来动态生成库的名称。- 作用:打包后的库将以指定的名称暴露给外部环境。例如,如果
entry中有main和vendor,那么打包后的库名称将是main和vendor。 - 适用场景:如果你的项目是一个库,并且希望外部代码可以通过特定名称来引用,
library是必须配置的。
3.mode模式
mode 字段用于指定当前构建模式,通常有以下两种选择:
development:开发模式,提供更详细的错误信息和警告,有助于调试,但构建速度较慢,生成的文件较大。production:生产模式,对代码进行最大程度的优化,包括压缩代码、移除无用代码等,以提高性能和减小文件大小,但错误信息相对较少。
4.externals
用于指定哪些模块不需要被打包到最终的输出文件中,而是通过外部方式(如 CDN、全局变量、其他模块系统等)引入。这样可以减小打包后的文件体积,并允许在运行时动态加载这些外部依赖。
01. vue
root: 'Vue':表示在浏览器环境中,vue模块将通过全局变量Vue来访问。commonjs: 'vue':表示在 CommonJS 环境中,vue模块将通过require('vue')来访问。commonjs2: 'vue':与commonjs类似,但适用于 CommonJS2 环境。amd: 'vue':表示在 AMD 环境中,vue模块将通过define(['vue'], ...)来访问。
02. vuex
vuex: 'Vuex':表示在浏览器环境中,vuex模块将通过全局变量Vuex来访问。
03. ElementUI
ElementUI: 'tree':表示在浏览器环境中,ElementUI模块将通过全局变量tree来访问。
如果你正在开发一个库,并且希望用户能够通过他们自己的方式引入依赖(如通过 CDN 或 npm),那么可以使用 externals 来排除这些依赖。
5.loader(类似于转换器)
把js和json外的其它文件转为Webpack可以识别的模块
loader采用链式调用,即一个文件可经过多个loader处理,执行顺序是从右到左,或者从下到上。
6.Plugin(类似于扩展器)
Plugin可以在Webpack工作流程中插入操作,用以扩展Webpack功能。
Webpack暴露若干种钩子,表示Webpack工作的不同阶段。Plugin可以通过注册钩子插入Webpack工作流程。
调用插件采用require形式,然后在plugins里,以new构建实例的方式使用。
7.performance
用于控制webpack在资源的大小超过限制的时候,做出提示。
-
hints:这个选项用于控制当生成的文件超过指定大小时,Webpack 应该显示什么类型的提示。可选值包括:
'warning':显示警告信息。'error':显示错误信息,并阻止打包过程。false:关闭性能提示。
-
maxEntrypointSize:指定入口起点文件的最大体积(以字节为单位)。例如,
512000字节等于 500 KB。 -
maxAssetSize:指定生成的资源文件的最大体积(以字节为单位)。例如,
307200字节等于 300 KB。 -
assetFilter:一个函数,用于过滤哪些文件应该受到性能提示的影响。在这个例子中,只有以
.js结尾的文件才会被检查文件大小。