You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Mix多输出文件场景下如何加快Sass编译速度及实现增量编译

解决方案

你提到的仅编译修改过文件的增量编译需求完全可以实现,配合以下优化可以把二次编译时间压缩到3秒以内:

1. 开启持久化缓存实现增量编译

Laravel Mix底层基于Webpack,开启文件系统缓存后只会重新编译有改动的文件,是性能提升幅度最大的优化。在webpack.mix.js中添加如下配置:

mix.webpackConfig({
  cache: {
    type: 'filesystem',
    // 缓存默认存储在node_modules/.cache/webpack,无需额外配置
  }
})

// 同时开启Babel缓存,减少JS编译开销
mix.babelConfig({
  cacheDirectory: true
})

注意:首次编译时依然会全量执行,耗时和之前接近,后续修改单个文件时仅会处理对应改动,编译耗时会从40秒降到1-3秒区间。

2. 拆分不变的第三方依赖

使用Mix内置的extract()方法将Vue、Lodash等不会频繁变动的第三方依赖单独打包,避免每次编译都重复处理这些资源:

// 提取所有node_modules中的依赖到单独的vendor文件
mix.extract()

如果你的SCSS引入了大量第三方样式库,也可以单独将全局公共样式、第三方库样式打包为独立的common.css,无需每个块的SCSS都重复引入解析。

3. 开发环境禁用高开销配置

开发环境关闭生产阶段才需要的优化项,减少不必要的计算:

  • 改用低开销的SourceMap:mix.sourceMaps(false, 'eval-cheap-module-source-map'),比默认全量SourceMap编译速度提升30%以上
  • 开发阶段禁用代码压缩、PurgeCSS、样式自动前缀补全(生产环境再开启)
  • 全局注入SCSS公共变量、Mixin,避免每个块文件重复引入:
    mix.sass('resources/sass/app.scss', 'public/css', {
      sassOptions: {
        additionalData: `@import "resources/sass/_variables.scss"; @import "resources/sass/_mixins.scss";`
      }
    })
    

4. 多进程编译加速多入口处理

你的场景是大量独立块作为多入口,开启多进程编译可以充分利用CPU多核性能,在webpack配置中添加:

mix.webpackConfig({
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: ['thread-loader']
      },
      {
        test: /\.scss$/,
        exclude: /node_modules/,
        use: ['thread-loader', 'css-loader', 'sass-loader']
      }
    ]
  }
})

内容的提问来源于stack exchange,提问作者Thony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:36:03