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

使用Gulp编译SASS时出现Legacy JS API弃用警告如何解决?

解决Dart Sass"legacy JS API"弃用警告(非屏蔽方案)

问题根源

你遇到的警告是因为当前使用的gulp-sass@5.x内部仍在调用Dart Sass的旧版JS API,而Dart Sass 1.81.0已明确该API将在2.0.0版本移除。以下是两种从根源解决问题的方案:


方案一:直接使用Dart Sass官方API编写Gulp任务

绕开gulp-sass,直接调用Dart Sass提供的新API(compileAsync)实现编译,完全避免旧API的使用:

修改后的gulpfile.js

const gulp = require('gulp');
const sass = require('sass');
const rename = require('gulp-rename'); // 可选,用于指定输出文件名
const sourcemaps = require('gulp-sourcemaps'); // 可选,如需生成sourcemap

const theme = {
    css : {
        src     : './assets/sass/app.scss',
        dist    : './dist/css'
    }
};

const sassOptions = {
    outputStyle: 'compressed',
};

const themeSass = async function() {
    // 使用Dart Sass新API编译
    const result = await sass.compileAsync(theme.css.src, sassOptions);
    
    return gulp.src(theme.css.src)
        // 如需sourcemap,取消下方注释
        // .pipe(sourcemaps.init())
        .pipe(rename('app.css'))
        .pipe(gulp.dest(theme.css.dist))
        // .pipe(sourcemaps.write('.'))
        // .pipe(gulp.dest(theme.css.dist))
};
themeSass.displayName = 'sass:theme';

exports.sass = gulp.parallel(themeSass);
exports.default = gulp.series(gulp.parallel(themeSass));

依赖安装(如需可选功能)

如果需要sourcemap或重命名功能,执行:

npm install --save-dev gulp-sourcemaps gulp-rename

方案二:替换为适配新API的Gulp Sass插件

改用gulp-dart-sass,该插件专门针对Dart Sass新API开发,用法与原gulp-sass完全兼容:

  1. 卸载旧插件
npm uninstall gulp-sass
  1. 安装新插件
npm install --save-dev gulp-dart-sass
  1. 修改gulpfile.js引入
    仅需替换gulp-sass的引入行,其余代码保持不变:
const gulp = require('gulp');
const gulpSass = require('gulp-dart-sass'); // 替换原require('gulp-sass')(require('sass'))

方案说明

以上两种方案均直接使用Dart Sass官方推荐的新API,而非旧版废弃接口,从根源消除了弃用警告,无需依赖silenceDeprecations选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:14:59