14

我想获取 sass 输出并将其连接到另一个 css 常规文件。

例子:

animate.css
app.scss

return gulp.src('app.scss')
    .pipe(sass({
        errLogToConsole: true
    }))
    .pipe(concat(['animate.css', OUTPUT_OF_THE_SASS_ABOVE]))
    .pipe(gulp.dest(paths.public+'css/'))
    .pipe(rename({ extname: '.min.css' }))
    .pipe(gulp.dest('css/'))
    .on('end', done);

任何想法怎么做?

******* 主意

也许有可能从 sass 生成 css 文件到一个临时位置,然后将它与 css 文件连接起来,然后他们只需将其删除。任何想法如何做到这一点,在一个单一的任务?

4

2 回答 2

31

gulp-concat只会gulp.src连接当前流中指定的文件。如果您只指定app.scss,则不能在流上连接其他文件。

这并不意味着您不能创建包含已编译输出和包含的流。app.scssanimate.css

为此,您需要合并流( npm install merge-stream):

var gulp,
    sass,
    merge,
    concat,
    rename;

//load dependencies
gulp = require('gulp');
sass = require('gulp-sass');
merge = require('merge-stream');
concat = require('gulp-concat');
rename = require('gulp-rename');

//define default task
gulp.task('default', function () {
    var sassStream,
        cssStream;

    //compile sass
    sassStream = gulp.src('app.scss')
        .pipe(sass({
            errLogToConsole: true
        }));

    //select additional css files
    cssStream = gulp.src('animate.css');

    //merge the two streams and concatenate their contents into a single file
    return merge(sassStream, cssStream)
        .pipe(concat('app.css'))
        .pipe(gulp.dest(paths.public + 'css/'));
});
于 2015-06-11T14:01:49.113 回答
14

为什么不在你的主 Sass 文件中包含 animate.css 作为部分?

@import "animate";

然后将 animate.css 重命名为 _animate.css

您还可以更好地控制 css 的编译方式/位置。

于 2015-06-11T13:37:57.800 回答