这是使用 Gulp.js 直接运行 libsass "sassc" 二进制文件的设置(如下所示),我目前正在使用插件gulp-run。这是经过多次修改,因为我根本不是节点或 gulp 专家,它仍然存在一些问题。
sassc
二进制文件通常接受输入和输出文件参数(例如../bin/sassc file.scss > file.css
),但它也可以使用参数来运行accept -s
,stdin
因此可以从gulp.src()
此处传递文件。如果我理解正确,似乎在这些条件下,成功地将其结果传递为。stdout
一个名为“test.css”的文件被写入同一目录中。请注意,如果没有 gulp-run 命令的“详细”设置,生成的 CSS 将输出到终端。在这里,它被抑制,结果被传递到链条上;但是,这似乎仍然没有创建正确的输出流,因为我没有成功添加诸如gulp-autoprefixer 之类的进程在此之后内联。此外,我需要一种将标准错误(如果有)捕获到日志文件的方法(现在如果它在控制台中输出错误)。
任何指导表示赞赏。我也可能在 gulp-run 中使用了错误的插件。还有gulp-exec和gulp-shell,可能还有其他,但我真的不知道要寻找什么区别。
var gulp = require('gulp');
var run = require('gulp-run');
var rename = require("gulp-rename");
gulp.task('sassc', function () {
gulp.src('test.scss')
.pipe(run('../bin/sassc -s', {verbosity: 1}))
.on('error', function (err) { this.end(); })
.pipe(rename(function (path) { path.extname = ".css"; }))
.pipe(gulp.dest('.'))
});
gulp.task('watch', function () {
gulp.watch('test.scss', ['sassc']);
});
gulp.task('default', ['watch']);