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

部署Liferay 7.4主题时gulp-sass插件报错求助

Liferay 7主题迁移至7.4的Sass兼容问题修复方案

问题背景

迁移Liferay 7主题到7.4版本时,触发Sass除法语法弃用警告:

Deprecation Warning: Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
Recommendation: math.div($spacer, 2) or calc($spacer / 2)

为消除警告,在package.json中添加关闭Dart Sass的配置:

"liferayTheme": {        
    "baseTheme": "styled",     
    "templateLanguage": "ftl",        
    "version": "7.4",       
    "sassOptions": {          
        "dartSass": false 
    }
}

但执行npm install和gulp deploy时出现gulp-sass插件报错,已尝试删除node_modules与package-lock.json、修改gulpfile.js手动引入sass依赖、参考官方文档等操作,均未解决问题。

当前环境参数:

  • node v16.13.0(npm v8.1.0,因Liferay 7.4要求无法降级)
  • Gulp 4.0.2
  • gulp-sass 5.1.0
  • sass 1.58.0
  • liferay-theme-tasks 11.4.0

修复方案

方案1:替换Sass除法语法(推荐)

放弃关闭Dart Sass的方案,直接适配新语法标准,从根源解决警告:

  • 对于变量除法,将$value / $divisor形式替换为math.div($value, $divisor),需在样式文件开头添加@use "sass:math";引入模块
  • 对于需要保留CSS原生计算的场景,使用calc($value / $divisor)替代直接除法

方案2:适配Node Sass依赖版本

若坚持关闭Dart Sass,需确保依赖版本兼容旧版Node Sass:

  1. 卸载当前冲突的依赖:
npm uninstall sass gulp-sass
  1. 安装兼容版本的依赖:
npm install gulp-sass@4.1.0 node-sass@7.0.1 --save-dev
  1. 确认package.json中的sassOptions配置完整无语法错误
  2. 删除node_modules和package-lock.json,重新执行npm install && gulp deploy

方案3:覆盖liferay-theme-tasks的Sass配置

在gulpfile.js中强制指定使用Node Sass实现,覆盖默认配置:

  1. 修改gulpfile.js内容:
const themeTasks = require('liferay-theme-tasks');

themeTasks.registerTasks({
    sassOptions: {
        implementation: require('node-sass'),
        sassOptions: {
            outputStyle: 'compressed'
        }
    }
});
  1. 安装对应版本的Node Sass:
npm install node-sass@7.0.1 --save-dev
  1. 重新执行部署命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:55:38