You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
module.exports={entry: {'a': './a','b': './b'},output: {filename: '[name]-[chunkhash:8].js'},module: {loaders:[{test: /\.css$/,// Only .css filesuse: ["style-loader","css-loader"]// Run both loaders}]}};
webpack-demo
webpack
中的hash
问题简单的项目目录如下图所示:
当
webpack
中的配置文件如下的时候:第一次执行
webpack
命令的时候,会出现下面的目录:但是当改变example1.js和example2.js中的任何一个文件的时候,然后再执行
webpack
,就会看到下面的目录:可以看到目录中又新添了两个文件,并且两个文件名的
hash
值是一样的。这里又一个弊端,就是没有改变的那个文件,也会生成一个新的hash
值的文件名。这是因为hash
字段是根据每次编译compilation
的内容计算得到,也就是整个文件的hash
值,这样的编译方式明显不太好,没有改变的文件也会随着其他文件的改变而改变解决上面的问题有如下几种方式:
使用
chunkhash
配置文件如下所示:
执行
webpack
之后,文件目录如下所示:改变
example1.js
之后,然后再执行webpack
,目录结构如下所示:这样就解决了上面的问题。但是当加入css文件之后,文件目录如下:
并且在
a.js
中引入a.css
,如下所示:webpack的配置文件如下所示:
执行
webpack
之后,目录结构变成如下:改变a.css之后再执行
webpack
发现文件目录变成如下:
从目录可以看出,文件打包没有打包出
css
文件,而且只要修改a.css
,那么a.js
也会发生改变,所以chunkhash
在含有css
依赖的时候就会有问题contenthash
将
webpack
配置修改如下:执行
webpack
后的文件目录:然后改变
a.css
文件之后,再执行webpack
,可以看到文件目录如下:看到目录下只是生成了改变的新的
css
文件,达到目的.使用
webpackMd5Hash
插件webpack的配置如下:
文件目录如下图所示:
修改a.css之后,文件目录变成如下所示:
可以看出,当a.css发生改变的时候,依赖它的其他文件并没有重新生成新的hash值,所以使用
webpackMd5Hash
也可以解决问题webpackMd5Hash
通过模块路径来排序chunk的所有依赖模块,并将这些排序后的模块源代码拼接,最后用MD5拼接后内容的chunkhash
,但是webpackMd5Hash有一些issue,有一些坑,具体可以参见这里还有这里
图片的hash问题
在文件中难免会用到图片,比如在文件目录中,a.css文件代码如下:
a.js中的文件代码如下:
webpack
配置如下:执行webpack之后,目录结构如下图所示:
可以看出图片也有相对应的编译文件,当图片的大小小于1000时,就不会创建相应的
imags
目录,只有大于1000时才会生成。当该目录的css
和js
发生改变的时候,也不会重新出现新的image
图关于这方面的问题,也可以参考这篇文章
The text was updated successfully, but these errors were encountered: