吞咽sass不编译sass文件

吞咽sass不编译sass文件,sass,gulp,Sass,Gulp,实际上,我正在尝试构建一个与web相关的计划,比如编译sass、缩小css、丑陋的javascript等等。但我真的有点不舒服 以下是我的代码示例: gulp.task('compile-sass', function() { gulp.src(buildType+config.path.sass+"/main.sass") .pipe(compass({ css: 'css', sass: 'sass' }

实际上,我正在尝试构建一个与web相关的计划,比如编译sass、缩小css、丑陋的javascript等等。但我真的有点不舒服

以下是我的代码示例:

gulp.task('compile-sass', function() {
    gulp.src(buildType+config.path.sass+"/main.sass")
        .pipe(compass({
            css: 'css',
            sass: 'sass'
        }))
    .pipe(gulp.dest(buildType+config.path.css+"/test"));
});
所以我在这里使用compass,因为我只有*.sass文件,没有.scss文件,所以gulp sass对我不起作用。因此,我想问是否有人可以给我一个提示,为什么这个任务不起作用。以下是我的控制台返回的内容:

[gulp] Starting 'compile-sass'...
[gulp] Finished 'compile-sass' after 6.11 ms
[gulp] You must compile individual stylesheets from the project directory.


events.js:72
    throw er; // Unhandled 'error' event
          ^
[gulp] Error in plugin 'gulp-compass': Compass failed
at Transform.<anonymous> (/Users/myusername/node_modules/gulp-compass/index.js:37:28)
at ChildProcess.<anonymous> (/Users/myusername/node_modules/gulp-compass/lib/compass.js:136:7)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:753:16)
at Socket.<anonymous> (child_process.js:966:11)
at Socket.EventEmitter.emit (events.js:95:17)
at Pipe.close (net.js:465:12)
[gulp]正在启动“编译sass”。。。
[gulp]在6.11毫秒后完成“编译sass”
[gulp]您必须从项目目录编译各个样式表。
events.js:72
投掷者;//未处理的“错误”事件
^
插件“gulp compass”中出现[gulp]错误:compass失败
在变换时。(/Users/myusername/node_modules/gulp compass/index.js:37:28)
在这个过程中。(/Users/myusername/node_modules/gulp compass/lib/compass.js:136:7)
在ChildProcess.EventEmitter.emit(events.js:98:17)
在maybeClose(child_process.js:753:16)
在插座上。(child_process.js:966:11)
位于Socket.EventEmitter.emit(events.js:95:17)
at Pipe.close(net.js:465:12)
我知道我没有使用任何config.rb,但有两件事: 1) 我没有发现这样的文件 2) GulpCompass文档给出了没有这样一个文件的示例,所以我假设它是可选的


提前谢谢。

多亏了史蒂夫莱西,我才能够解决这个问题

如果您只有.sass文件,而没有.scss文件,则需要使用gulp ruby sass,而不是gulp compass或gulp sass。以下是我的工作代码示例:

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

gulp.task('compile-sass', function() {
    gulp.src(path/to/your/sass/folder/main.sass")
        .pipe(sass())
    .pipe(gulp.dest('path/to/your/css/folder));
});

最基本、最简单的方法是:

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

gulp.task('styles', function() {
    gulp.src('sass/*.scss')
    .pipe(sass({ 
        noCache : true,
        style   : "compact"
    }))
    .pipe(gulp.dest('css'));
});

gulp sass使用的节点sass的最新版本支持sass和scss语法

或者是目前最新的版本

节点sass正在使用libsass


看看他们的2.0发行说明。

我知道这可能不是这个答案的正确位置,但谷歌上没有太多关于gulp ruby sass错误的信息

对于收到错误的任何人,“
源代码
与任何文件都不匹配。”请确保放置在gulp.src()中的路径中至少包含1个sass(或scss)文件

在我的情况下,我有3条任务路径,其中只有1条路径是完全空的。通过向该路径添加一个空白文件(_fake.scss),错误得到了修复


希望这对别人有帮助

较新版本的节点sass(因此gulp sass,它只是节点sass的一个薄包装器)处理sass和scss语法,并通过读取文件扩展名决定使用哪种语法

下面是一个gulp文件的演示,它同时处理scss和sass语法(这不是您希望在项目中使用的):

这似乎没有记录在任何容易找到的地方,我只是碰巧发现了它


旁注:我被sass吸引,但我想我会改为scss。如果您正在选择,答案中有很多有用的信息。

buildType+config.path.sass和
buildType+config.path.css
的值是什么?它们是从项目根目录开始的相对路径吗,在项目根目录中运行
gulp
?关于配置,它不是
gulpcompass
config,而是。还有一件事,Compass只为SASS添加了LIB。因此,编译
.sass
.scss
的能力不是来自指南针,而是来自sass本身,因此
吞下sass
应该可以为您完成这项工作。谢谢您的快速回答
buildType+config.path.sass
是一个来自Json配置文件的有效字符串,我在同一个gulpfile中的其他任务中使用它,它工作得非常好。当我使用
gulp sass
而不是“compass”时,在读取文件时会出现另一个错误(
[gulp][gulp sass]源字符串:4:error:error读取$gray之后的值时出错
和其他类似的错误)。我假设gulp sass不支持
.sass
文件,而只支持
.scss
。gulp不关心文件扩展名是什么。它使用
节点sass
解析器,该解析器执行以下操作。考虑使用<代码> Guip Ruby Sass<代码>,因为它应该支持SCSS和SASS扩展。这样可以减少可能出现的错误,缩小您的问题范围。谢谢@SteveLacy。一切正常!答案已经发布了。你是说
sass/*.sass
var sass = require('gulp-sass');
sass.compiler = require('node-sass');

gulp.task('my-sass-task', function () {
  return gulp.src('styles/**/*.sass')   // note file ext
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('static'));
});

gulp.task('my-scss-task', function () {
  return gulp.src('styles/**/*.scss')   // note file ext
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('static'));
});