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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gulp.js开始执行sass任务但没有完成相关的知识,希望对你有一定的参考价值。

我的gulpfile.js

var gulp = require('gulp');

// plugins
var sass = require('gulp-sass');
var minifycss = require('gulp-minify-css');

// compile sass
gulp.task('sass', function() {
    return gulp.src('static/css/scss/main.scss')
        .pipe(sass())
        .pipe(minifycss())
        .pipe(gulp.dest('/static/css/main.css'));
});

gulp.task('watch', function() {
    gulp.watch('static/css/scss/*.scss', ['sass']);
})

gulp.task('default', ['watch']);

当我运行gulp时,我得到以下输出:

[gulp] Using gulpfile /var/www/example/gulpfile.js
[gulp] Starting 'watch'...
[gulp] Finished 'watch' after 21 ms
[gulp] Starting 'default'...
[gulp] Finished 'default' after 23 μs

然后,当我保存我的main.scss文件时,它输出:

[gulp] Starting 'sass'...

在这一点上,它只是挂起,永远不会完成。我究竟做错了什么?

答案

sass任务内部的返回似乎打破了它,更新了我的gulpfile.js以使其工作:

var gulp = require('gulp');

// plugins
var sass = require('gulp-sass');
var minifycss = require('gulp-minify-css');

// compile sass
gulp.task('sass', function() {
    gulp.src('static/css/scss/main.scss')
        .pipe(sass())
        .pipe(minifycss())
        .pipe(gulp.dest('/static/css'));
});

gulp.task('watch', function() {
    gulp.watch('static/css/scss/*.scss', ['sass']);
})

gulp.task('default', ['watch']);
另一答案

对于有此问题的任何其他人,我设法通过删除循环导入来解决此问题。

例如...

之前:

file1.scss
@import 'file2';

file2.scss
@import 'file1';

后:

file1.scss
<removed import>

file2.scss
@import 'file1';

我实际上并不需要循环依赖,我只是将依赖项复制/粘贴到我所有scss文件的顶部。注意如果你的文件实际上需要相互导入,你需要以这种方式重构文件你避免循环依赖。

另一答案

我的sass编译没有工作的原因和gulp进程挂起并ping我的处理器是因为我在.scss文件中有一个旧的引用,但我删除了该文件。从来没有抱怨任何输出 - 这很难追查 - 我很幸运。

@import 'file-that-has-been-removed-but-still-referenced';

以上是关于Gulp.js开始执行sass任务但没有完成的主要内容,如果未能解决你的问题,请参考以下文章

gulp能做什么,前端装逼为何要用它

sass之gulp自动化构建,在原生小程序中使用sass语法

01. 人生苦短 gulp.js的简介与安装

使用 Gulp.js 和 globbing 模式就地修改文件(相同的目标)

gulp全局安装

gulp.js 去除输出文件的相对路径