为什么我的 gulp 任务停止生成我的 css 文件?

Why did my gulp task stopped generating my css files?

我使用 sass(由 gulp 任务触发)生成我的 css 文件。我最近格式化了我的计算机,这个任务停止工作了。

var sass = require('gulp-ruby-sass');
var config = require('../config');

gulp.task('styles', ['copy'], function() {
  gulp.src(config.sources.sass)
    .pipe(sass({ style: config.isProduction ? 'compressed' : 'expanded' }))
    .pipe(gulp.dest(config.build.cssDir));
});

在我重新安装 OS (Windows 8.1) 之前,这个任务曾经工作正常。现在在我 运行 这个任务之后没有可见的错误,但是没有创建 css 文件。

所以,问题是:

为什么我的 gulp 任务停止生成我的 css 文件?

你的 gulp 任务很好。

gulp-ruby-sass 默认使用 gem sass 来编译你的 scss 文件。由于您最近格式化了计算机,我敢打赌您安装了 Windows 的 Ruby 安装程序的最新版本。我做了一些测试,我注意到 sass 在使用 Ruby 2.2.2 时似乎无法在 Windows 上工作。 sass gem 在 Ruby 2.2 在 Ubuntu 和 OS X.

上工作得很好

如果这是一个选项,我建议您从 Ruby 2.2.x 降级到 Ruby 2.1.6,这应该可以解决您的问题。

如果没有,您可以使用 gulp-debug 检查您的流并从那里开始。

gulp.task('styles', ['copy'], function() {
  gulp.src(config.sources.sass)
    .pipe(debug({title: 'Before sass:'}))
    .pipe(sass({ style: config.isProduction ? 'compressed' : 'expanded' }))
    .pipe(debug({title: 'After sass:'}))
    .pipe(gulp.dest(config.build.cssDir));
});

如果您无法降级 ruby 版本,您可以使用 gulp-sass 而不是 gulp-ruby-sass。 Gulp sass 根本不需要 ruby,因为它使用在节点中为 C/C++ 库制作的包装器 - libsass.

您还可以编辑您的 post 并包含您的 gulp-ruby-sass 版本(或您的 package.json)以及您的 nodejs 版本。