laravel-mix 构建scss文件非常慢
问题描述
未能定位问题,只知道laravel-mix
构建scss文件的时候非常慢,一次构建需要等86秒。
问题出现的环境背景及自己尝试过哪些方法
曾尝试把图片文件目录地址添加至alias
,貌似速度提升了,耗时降至40秒。
相关代码
laravel-mix
配置
const sourcePath = "resources/sources"
mix
.webpackConfig({
resolve: {
alias: {
'@': __dirname + `/${sourcePath}`,
'@ASSETS': __dirname + `/${sourcePath}/assets`
}
}
})
静态资源引用方式
&-brand{
a{
display: block;
background-image: url("~@ASSETS/imgs/logo.png");
background-repeat: no-repeat;
background-size: contain;
width: 160px;
height: 50px;
}
}
你期待的结果是什么?
能否大幅加快构建速度?比如10秒内构建完成。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在
laravel-mix
找到问题了issues#287,里面讨论并逐步梳理问题,其中加快速度的办法可以去掉sourceMap
设置等讨论,最后howdu提到将processCssUrls
设置关闭得到广泛认可,下面是具体设置。但是这里有个弊端,关闭后静态资源需要手动搬至构建目录,而
scss
文件中所写的路径也是生产路径(不是当前开发目录的路径),如不是新项目开初的设定而是旧项目更改需要变动很多地方,不实用!再仔细看错误提示发现
sass-loader
之前有个resolve-url-loader
,感觉这个是切入点谷歌一下发现scss构建巨慢的元凶的确是它。resolve-url-loader
能帮助sass
定位文件具体路径,如果在scss
文件中较多使用@import
,将会导致性能问题。去npmjs.com查看
resolve-url-loader
发现已经到3.1.0
版本,再看看本地安装的是2.3.2
版本,好了先尝试更新一波。最后结果是完美解决了性能问题,构建耗时从40秒缩短至11秒,已经可以接受了!