吞咽sass不编译sass文件
实际上,我正在尝试构建一个与web相关的计划,比如编译sass、缩小css、丑陋的javascript等等。但我真的有点不舒服 以下是我的代码示例:吞咽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' }
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'));
});