webpack中打包静态资源
2017-09-21 本文已影响411人
我不叫奇奇
在使用webpack打包的时候发现有一些图片在打包之后,404看不到了
问题
在我的vue项目中,测试环境下图片可以显示出来,但是到生产环境下我的图片就没了
![](https://img.haomeiwen.com/i3133116/eb426499cb3b78fc.png)
![](https://img.haomeiwen.com/i3133116/e9e01a509c438e49.png)
![](https://img.haomeiwen.com/i3133116/b8ed6961a675ef58.png)
结果发现问题在打包之后的文件夹中没有我需要的一些图片。
原因
导致这个问题的原因是,我在项目中对图片的调用使用了字符串拼接的模式
![](https://img.haomeiwen.com/i3133116/9c9443cd9eb7fcdd.png)
这个url只有在页面加载出来的时候才会去读取。
在dev环境中,我设置了默认对一些静态文件的放置,所以可以看到
![](https://img.haomeiwen.com/i3133116/612232ee62a7652b.png)
但是到了生产环境。webpack的打包原理是
![](https://img.haomeiwen.com/i3133116/c6c922fb927aa06f.png)
而我的url是拼接的,打包的时候后面的参数还没识别出来,所以无法打包对应的文件。在生产环境中当然无法看到对应的文件了。
解决办法
强行打包。
在项目中装shelljs,使文件中可以使用linux命令
cnpm i shelljs --save-dev
![](https://img.haomeiwen.com/i3133116/14e34b5176815c04.png)
生产环境的进入口,可以在packge.json中看到
![](https://img.haomeiwen.com/i3133116/c6a4c81e4e282a07.png)
引用shelljs
![](https://img.haomeiwen.com/i3133116/077e2c9188861a68.png)
在打包完成后,执行linux命令,将我们的文件夹复制到正确的位置
![](https://img.haomeiwen.com/i3133116/ef94a2b42de938aa.png)
cp('-R', 'src/assets/img', webpackConfig.output.path + '/static')