总结webpack中的几个知识点

889 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

file-loader

file-loader:处理静态资源模块的
是把打包入口中识别出的资源模块,移动到输出目录,并且返回一个地址名称
我们知道webpack默认只支持js、json,如果我们要在页面上显示一张图片的话,webpack默认是不支持的,例如,

image.png
src/index.js :
image.png
引入了一个01.jpg的图片文件,执行一下: image.png
报错了,需要安装一个支持jpg图片的loader,并让在webpack文档中的查找对应的loader,file-loader就可以,现在安装一下file-loader:
npm install file-loader
安装成功后,看下package.json:

image.png

成功安装了,并且安装的是6.2.0版本的,有同学依旧报错的话,可尝试一下降级,因为webpack高版本不稳定,可以装一个稳定的版本。
完了,也要配置一下,在webpack.config.js中:

image.png
在执行一下构建npm run ... 看效果:

image.png
这次肯定不会报错了,首先出口文件中dist下面多了一个我入口文件里引入的jpg图片文件。
再看看dist/index.html的效果,这个dist/index.html是我自己手动添加的,为了方便看我们的代码效果。
此html里引入了出口文件index.js,而出口文件index.js是由入口文件src/index.js生成的,所以出口文件里的dist/index.html其实是引进了我入口文件src/index.js里面的代码啦,入口文件src/index.js代码如下:

image.png
出口文件dist/index.html代码:

image.png

index.js里我先把01.jpg引进来,然后做了打印,最后把图片添加到id为app的div里面。我们看下效果:

image.png
可以看到打印的是一个地址名称,图片也成功显示出来啦。

配置选项(ext、name、path)

但是我们可以看一下,出口文件里面的图片名字太长了,应该是个默认的哈希格式的文件名称,这个太长了不雅观也看不出是哪个图片。

image.png
这个我们也可以配置一下,可以在loader官网里面查阅。
我们这样配置,以自己入口文件的名字为出口文件的名字

image.png [ext]: 资源扩展名的意思
[name]:资源的基本名称
执行构建,看效果:

image.png
出口文件里多了一下01.jpg跟我们入口文件里的名字一样。
我们再配置一下path,就是入口在哪个文件路径里,出口时这个图片也在对应的文件路径里。
path: 资源相对于 context的路径
webpack.config.js:

image.png
执行够建,看效果:

image.png
跟入口文件里的路径是一样的。
但是我们有没有发现一个问题,我们每次打包的时候,出口文件里面前几次生成的文件依旧存在。

image.png
按理说最新打包文件里面是没有这两个的, 看起来也很繁琐,不好看,不便于管理。所以,我们可以用这个插件clean-webpack-plugin

clean-webpack-plugin

清除dist打包文件里多余的文件.
安装:
npm install clean-webpack-plugin

配置:
webpack.config.js:

image.png
执行构建,看效果:

image.png

image.png
ok, 打包文件里干净了。