Webpacck Configuration Engineer

webpack已经复杂到需要这么厚的一本书来讲了吗,前端还真是不容易呢(逃 ————————知乎某网友

Webpack 基础模块

  • Loader 用于加载处理各种文件

rules: [ 
	{
	   	 test : /\ . css$/ ,
		 use : [’ style-loade r ’,’css-loader?minimize’ ],
	 }
]

use : [’ babel-loader?cacheDirectory ’]这种处理程序后?再接参数的形式表示传给这个处理程序的参数此例为缓存babel的编译结果以加快重新编译的速度,需要多个参数传入的时候可以添加一个Options:{} 来进行描述 使用perser属性可以更细粒度的配置那些模块的语法被解析那些不解析。

  • Plugin 用于扩展Webpack功能

canst ExtractTextPlugin =require (’ extract-text-webpack-plugin ’) ;
// 其他配置
plugins: [ 
	new ExtractTextPlugin({
		filename [contenthash:8].css`,
	}),
]
  • noParse配置项可以让Webpack忽略对部分没有采用模块化的文件的递归解析和处理,提高构建性能

resolve相关配置

  • alias 配置项设置路径别名

  • mainFields配置决定优先采用同一个模块针对不同第三方环境提供的不同代码中的那一个。

  • descriptionFiles设置描述第三方模块的文件名称(一般都为Webpack.json)。

  • enforceExtension配置被改为true时则所有导入语句都必须带后缀

DevServer相关配置

  • devServer.hot是否使用热更新

  • devServer.inline用于配置是否将这个代理客户端自动注入将运行在页面中的Chunk里,如果想使用热更新最好开启此功能

  • historyApiFallback用于方便单页面应用开发使访问子路由时都返回index.html,如果项目是多个单页面应用组成的就要对其进行特殊配置

  • contentBase配置DevServerHTTP服务器的文件根目录。特殊情况下以 contentBase : path.join(_dirname,’pubilc’) 的形式添加额外文件

  • haeders配置HTTP响应头

  • host 配置DevServer服务监听的地址

  • port配置DevServer服务监听的端口

  • allowedHosts配置一个白名单列表,只有HTTP请求的HOST在列表里才能正常的返回

  • disableHostCheck配置用于配置是否关闭用于DNS重新绑定的HTTP请求的HOST检查。DevServer默认只接受来自本地的请求,关闭后可以接受来自任意HOST的请求。他通常用于搭配—host 0.0.0.0使用,因为想让其他设备访问自己的本地服务,但访问时是直接通过IP地址访问而不是通过HOST访问,所以要 关闭HOST检查。

  • HTTPS DevServer默认使用HTTP服务,当我们需要HTTPS的时候配置此项

  • Open用于指定DevServer完成构建后系统默认浏览器打开的网页

其他配置项

  • Devtool用于配置如何生成SourceMap(帮助压缩后代码定位其初始位置)

  • target配置项可以让Webpack构建出针对不同运行环境的代码

  • Watch和WatchOption 监听文件更新和配置更详细的监听机制

  • Externals用来告诉Webpack在构建代码时不打包那些模块

  • ResolveLoader用来告诉Webpack如何去寻找Loader

整体配置结构

主要功能

  • 压缩混淆代码 uglify.js

  • JS兼容性补丁 polyfill.js babel.js

  • 处理依赖

webpack output

  1. Assets

  2. Chunk

  3. moudle 包

最后更新于