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') |