玩转webpack配置,轻松入门


在工作中我们接触到最多的webpack配置项,就是vue或者react脚手架搭建出来的环境,通过下载官方脚手架,然后按照提示一步一步操作,最终会生成如下结构目录(部分文件是我手动添加的)

 里面配置项及其繁多,如果想要自己再手动配置类似开发环境,难免会让人望而却步。

进入正题,什么是webpack?看官方是如何秒速的

“webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。”

官方意思很直白,就是个模块打包器,以vue官方脚手架为例,它都做了哪些配置呢?

部分截图

 看其配置文件,vue脚手架配置文件大致做了如下操作

入口配置:浏览器打开一开始要执行的文件

输出配置:npm run build 执行命令最终打包后文件输出的位置

模块加载:js 图片 scss/css 字体 媒体文件 等,这些文件webpack是不会自动识别的,这里需要我们下载插件去配置它,告诉webpack如何加载这些不同类型的文件(vue脚手架基本上的配置都处理好了,所以配置会觉得配置多)

插件配置:如mini-css-extract-plugin这个插件, 是用来提取网页以这种方式加载的样式,最终提取的内容会打包到.css文件,以文件方式加载到网页中 

打包优化配置:这里配置空间比较大,意思就是项目优化

分环境打包:如哪些插件是在生产环境运行的,哪些是在开发环境配置的,哪些是共同的配置或者说基础的配置,于是就有了这个三个文件 webpack.base.config.js(生产和开发环境共同的配置),webpack.dev.config.js(开发环境的配置) webpack.prod.config.js(生产环境的配置)

可能还有其他配置,先列举这么多,说白了,webpack就是一个没有手和脚的机器人,我们需要让它给我们工作干活,我们就需要给他安装手和脚,这些手和脚我们可以随意生产随意开发,然后让机器人自己去适配,随意开发的前提是我们需要遵循他们制定的规则

用一句话总结webpack的配置,你要让他干什么,你就需要给他配置什么

接下来,我们先让webpack干一个最简单的活,让他运行一个最简单的网页及打包一个最简单的网页

新建demo文件夹(项目文件),执行 `npm init` 一路回车,然后demo文件夹下会出现一个`package.json`文件夹

package.json文件内容如下

根目录新建一个`index.html`

根目录下新建`index.js`

根目录新建一个`build`文件夹,在build文件里新建`webpack.base.config.js`

此时`html-webpack-plugin`这个插件我们没有,先需要安装它,执行命令`cnpm install html-webpack-plugin --save-dev`

然后我们在`package.json`文件里的"script"对象中新增一行代码 `"start": "webpack-dev-server --config build/webpack.base.config.js"`

此时我们命令里用到了 `webpack-dev-server`这个插件,所以我们需要安装它 `cnpm install webpack-dev-server --save-dev`

到目前为止,我们写了webpack配置文件也没安装webpack插件,所以现在需要安装webpack基础插件,webpack和webpack-cli ,执行命令 `cnpm  install webpack webpack-cli --save-dev` 

看下最终结构图

最后跑下项目,执行命令 `npm run start`,运行结果如下

此刻,项目开发环境算是正常跑起来了,现在需要简单配置下,将项目打包

在`package.json`文件里的"script"对象中新增一行代码 `"build": "webpack --env production --config build/webpack.base.config.js"`

修改文件`build/webpack.base.config.js`,两处改动

此时,我们执行打包命令`npm run build`,dist文件内容及运行结果如下

到这一个最简单的webpack开发及打包环境就配置好了