Webpack 配置
- Output:配置如何输出最终想要的代码
- Module:配置处理模块的规则
- Resolve:配置寻找模块的规则
- Plugins:配置扩展插件
- DevServer: 配置 DevServer
entry
模块的入口,从此处进行搜寻和递归解析 该配置必填,否则会报退出
参数
只会生成一个 chunk,名称为 main
- string 入口模块的路径,可以是相对路径
./app/entry
- array 配合 output.library 使用时,只有数组里的最后一个入口文件的模块会被导出
可能会生成 chunk,名称为 key 名
- object 配置多个入口,每个入口生成一个 chunk
{a: './app/a',b:'./app/b'}
异步 entry
entry: () => {
{
return new Promise((resolve) => {
// 配置镀锡
resolve({});
});
}
};
context
wp 寻找相对路径的文件会用 context 为根目录 默认为执行启动 webpack 时所在的工作目录
module.exports = {
context: path.resolve(__dirname, "app"),
};
context 必须是一个绝对路径的字符串
format
默认打包格式是 IFE
通过 format 可以配置输出 umd,cjs 还是 esm
配置 sourcemap
不同版本 webpack 不一样,需要看详细文档
optimization: { // 1. 这个配置必须
minimize: false
},
devtool: "source-map" // 2. 这个配置必须
publicPath
会影响最后页面打包后标签上的路径
<link href="{publicPath}/xxx.js">
千万不要用相对路径,比如./
否则页面进入路由/a 后,资源会去/a/xxx.js
下找
externals
在 Webpack 中使用 externals 配置一个包时,该包不会被打包到最终的输出文件中,而是被视为外部依赖。因此,externals 配置的包本身不会有 hash 值,因为它不参与 Webpack 的打包过程。
由于 externals 的包不在打包范围内,Webpack 不会对其进行任何处理或生成 hash 值,因此它的内容变化不会影响 Webpack 输出文件的 hash 值。
防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖(external dependencies)。
例如,从 CDN 引入 jQuery,而不是把它打包 这样就剥离了那些不需要改动的依赖模块
output
filename
配置输出文件的名称
可以动态设置
[name].js
即用 chunk 名称作为输出文件名称