entry
1 | /** |
vendors 第三方库
// 待补充
output
指示 webpack 如何去输出、以及在哪里输出、输出的格式等
1 | module.exports = { |
resolve
配置模块如何解析
extensions:自动解析确定的扩展,省去你引入组件时写后缀的麻烦,alias:非常重要的一个配置,它可以配置一些短路径,modules:webpack 解析模块时应该搜索的目录,- …
1 | module.exports = { |
module.rules
rules:也就是之前的 loaders,test: 正则表达式,匹配编译的文件,exclude:排除特定条件,如通常会写node_modules,即把某些目录/文件过滤掉,include:它正好与exclude相反,use -loader:必须要有它,它相当于是一个test匹配到的文件对应的解析器,babel-loader、style-loader、sass-loader、url-loader等等,use - options:它与loader配合使用,可以是一个字符串或对象,它的配置可以直接简写在loader内一起,它下面还有presets、plugins等属性;
plugins
// 另一篇文章 webpack - plugins 篇 敬请期待
devtool
- 控制是否生成,以及如何生成 source map 文件,开发环境下更有利于定位问题,默认 false,
- 当然它的开启,也会影响编译的速度,所以生产环境一定一定记得关闭;
- 常用的值:
cheap-eval-source-map、eval-source-map、cheap-module-eval-source-map、inline-cheap-module-source-map等等
1 | devtool: 'eval-source-map' // 原始源代码 |
webpack-dev-server
contentBase:告诉服务(dev server)在哪里查找文件,默认不指定会在是当期项目根目录,historyApiFallback:可以是 boolean、 object,默认响应的入口文件,包括 404 都会指向这里,object 见下面示例:compress:启用 gzip 压缩,publicPath:它其实就是 output.publicPath,当你改变了它,即会覆盖了 output 的配置,stats: 可以自定控制要显示的编译细节信息,proxy:它其实就是 http-proxy-middleware,可以进行处理一些代理的请求。
1 | const webpack = require('webpack') |
optimization
optimization是webpack4新增的,主要是用来让开发者根据需要自定义一些优化构建打包的策略配置,minimize:true/false,告诉 webpack 是否开启代码最小化压缩,minimizer:自定 js 优化配置,会覆盖默认的配置,结合UglifyJsPlugin插件使用,removeEmptyChunks: bool 值,它检测并删除空的块。将设置为 false 将禁用此优化,nodeEnv:它并不是 node 里的环境变量,设置后可以在代码里使用 process.env.NODE_ENV === ‘development’来判断一些逻辑,生产环境UglifyJsPlugin会自动删除无用代码,splitChunks:取代了 CommonsChunkPlugin,自动分包拆分、代码拆分,详细默认配置:- 默认配置,只会作用于异步加载的代码块 —— chunks: ‘async’,它有三个值:all,async,initial
1 | module.exports = { |
配合 UglifyJsPlugin
1 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin') |