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

Mac环境下dart-sass的mix()输出rgb而非HEX的配置疑问

解决gulp-sass@6.0.0编译color.mix输出RGB而非HEX的问题

问题场景

在Mac系统中使用gulp@5.0.0与gulp-sass@6.0.0时,使用Sass的color.mix()混合颜色后,编译结果输出带小数的RGB格式,而非期望的HEX格式。

当前Gulp任务代码

import { src, dest, series, watch } from 'gulp';
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';

const sass = gulpSass(dartSass);

const sassTask = (done) => {
  src([ "src/sass/**/*.scss"])
    .pipe(
        sass().on('error', sass.logError)
    )
    .pipe(dest('css'))
    .on('end', done);
};

const watchTask = (done) => {
  watch("src/sass/**/*.scss", series(sassTask))
    .on('end', done);
};

export { sassTask, watchTask };

export default watchTask;

示例SCSS代码

@use "sass:color";

$color_brown: #58504c;

p {
  color: color.mix($color_brown, #fff, 50%);
}

当前编译结果

p {
  color: rgb(104.7, 97.5, 93.9);
}

期望编译结果

p {
  color: #69625e;
}

配置调整方案

需要在sass()编译调用中添加颜色格式配置,强制dart-sass输出HEX格式的颜色值,同时可指定输出风格保持代码结构一致:

修改后的Gulp任务代码:

import { src, dest, series, watch } from 'gulp';
import * as dartSass from 'sass';
import gulpSass from 'gulp-sass';

const sass = gulpSass(dartSass);

const sassTask = (done) => {
  src([ "src/sass/**/*.scss"])
    .pipe(
        sass({
          // 指定CSS输出风格,与期望结果的格式匹配
          outputStyle: 'expanded',
          // 强制颜色输出为HEX格式
          color: {
            format: 'hex'
          }
        }).on('error', sass.logError)
    )
    .pipe(dest('css'))
    .on('end', done);
};

const watchTask = (done) => {
  watch("src/sass/**/*.scss", series(sassTask))
    .on('end', done);
};

export { sassTask, watchTask };

export default watchTask;

调整说明

  • color.format: 'hex':强制dart-sass将计算后的颜色值输出为HEX格式,替代默认的RGB输出
  • outputStyle: 'expanded':保持编译后的CSS代码结构与你期望的一致(如果需要压缩格式可改为compressed)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:34:52