在为 SCSS 编译优化我的 Gulp 任务方面需要帮助

Posted

技术标签:

【中文标题】在为 SCSS 编译优化我的 Gulp 任务方面需要帮助【英文标题】:Need help in Optimizing my Gulp Task for SCSS compilation 【发布时间】:2020-06-28 00:10:23 【问题描述】:

我为我的本地项目配置了这个 Gulp 任务。它完美地监视着我的文件夹,将 SCSS 文件编译为 CSS。 唯一的问题是 -

无论我是否对代码进行任何更改,我的 Gulp 任务平均每秒运行 6 次“sass”任务。即使在关闭 IDE(SublimeText)之后,它也会继续像这样冗余地运行。我觉得这可能不是一个好习惯,而且还会影响我机器的性能。

这是我的 Gulp 代码:

var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');

gulp.task('sass', function()
   return gulp.src('compile/style.scss')
      .pipe(sourcemaps.init(loadMaps: true))
      .pipe(sass())
      .pipe(sass(outputStyle: 'expanded',sourceComments: false))
      .pipe(sourcemaps.write('../../../compile'))
      .pipe(gulp.dest('public/assets/css'));
);

gulp.task('watch', function()
    gulp.watch('compile/**/*', gulp.series('sass'));
);

gulp.task('default', gulp.series('sass','watch'));

【问题讨论】:

【参考方案1】:

由于这两行,您正在创建一个循环:

 .pipe(sourcemaps.write('../../../compile'))    // saving to compile


gulp.task('watch', function()
    gulp.watch('compile/**/*', gulp.series('sass'));  // watching compile
);

因此,您的 sass 任务运行,写入 watch 看到的 compile 文件夹已更改,它会一遍又一遍地再次触发 sass 任务。

将您的源地图保存在您的watch 文件夹中不包括的位置。


gulp.task('sass', function()
   return gulp.src('compile/style.scss')
      .pipe(sourcemaps.init(loadMaps: true))
      .pipe(sass())                           // delete this, no need for two sass pipes
      .pipe(sass(outputStyle: 'expanded',sourceComments: false))
      .pipe(sourcemaps.write('../../../compile'))
      .pipe(gulp.dest('public/assets/css'));
);

【讨论】:

哦..我明白了。这确实有道理。让我试试这个。 谢谢。这有帮助。需要另一个帮助,你能帮我在我的任务中添加 AutoPrefixer。我尝试了多次,但都失败了。 实际上,我只使用 autoprefixer 来部署最终代码——而不是与 sass 一起使用——所以我无法帮助你。但是请参阅对另一点的答案的编辑。

以上是关于在为 SCSS 编译优化我的 Gulp 任务方面需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

编译不同 SCSS 文件的 Gulp 组合任务

scss 使用Autoprefixer在SASS中编译Shopify Liquid标签的Gulp任务

代理URL不能与BrowserSync Gulp任务一起使用

Gulp 3 到 Gulp 4:如何观看 scss 并将其缩小/编译成 css?

Gulp.js开始执行sass任务但没有完成

如何让Gulp识别编译文件中的更改/更新?