Gulp 大口改变

Gulp 大口改变,gulp,pipe,Gulp,Pipe,我有这个任务。首先,我用一个src做一件事。然后我用另一个src做另一件事。如何将它们“合并”为一条管道 gulp.task('css', function() { gulp.src('site/patterns/site/site.scss') .pipe(sass().on('error', sass.logError)) .pipe(autoprefixer()) .pipe(rename('index.css'))

我有这个任务。首先,我用一个src做一件事。然后我用另一个src做另一件事。如何将它们“合并”为一条管道

gulp.task('css', function() {
    gulp.src('site/patterns/site/site.scss')
        .pipe(sass().on('error', sass.logError))
        .pipe(autoprefixer())
        .pipe(rename('index.css'))
        .pipe(gulp.dest('assets/css'))
        .pipe(minifyCss())
        .pipe(rev())
        .pipe(gulp.dest('assets/css'))
        .pipe(rev.manifest())
        .pipe(revDel({ dest: 'assets/css' }))
        .pipe(gulp.dest('assets/css'))
        .pipe(notify("CSS generated!"))
    ;
    gulp.src( ['assets/css/index-*.css'], {read: false})
        .pipe( revOutdated() ) // leave 2 recent assets (default value) 
        .pipe( cleaner() );
});

您不会合并它们,也不会将它们转换为单个管道。这里有两个独立的任务。你应该这样对待他们

您希望第二个管道仅在第一个管道完成后运行,以便将所有
.css
文件生成到
assests/css
。因此,您将每个管道放入一个单独的任务中,并使第二个管道依赖于第一个管道:

gulp.task('generate-css', function() {
  return gulp.src('site/patterns/site/site.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer())
    .pipe(rename('index.css'))
    .pipe(gulp.dest('assets/css'))
    .pipe(minifyCss())
    .pipe(rev())
    .pipe(gulp.dest('assets/css'))
    .pipe(rev.manifest())
    .pipe(revDel({ dest: 'assets/css' }))
    .pipe(gulp.dest('assets/css'))
    .pipe(notify("CSS generated!"));
});

gulp.task('css', ['generate-css'], function() {
  return gulp.src( ['assets/css/index-*.css'], {read: false})
    .pipe( revOutdated() ) // leave 2 recent assets (default value) 
    .pipe( cleaner() );
});

您不会合并它们,也不会将它们转换为单个管道。这里有两个独立的任务。你应该这样对待他们

您希望第二个管道仅在第一个管道完成后运行,以便将所有
.css
文件生成到
assests/css
。因此,您将每个管道放入一个单独的任务中,并使第二个管道依赖于第一个管道:

gulp.task('generate-css', function() {
  return gulp.src('site/patterns/site/site.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer())
    .pipe(rename('index.css'))
    .pipe(gulp.dest('assets/css'))
    .pipe(minifyCss())
    .pipe(rev())
    .pipe(gulp.dest('assets/css'))
    .pipe(rev.manifest())
    .pipe(revDel({ dest: 'assets/css' }))
    .pipe(gulp.dest('assets/css'))
    .pipe(notify("CSS generated!"));
});

gulp.task('css', ['generate-css'], function() {
  return gulp.src( ['assets/css/index-*.css'], {read: false})
    .pipe( revOutdated() ) // leave 2 recent assets (default value) 
    .pipe( cleaner() );
});

的确,不应将单独的任务合并或转换为单个管道,但将每个微小的子任务提升为单独的任务,以确保其以正确的顺序执行,可能会快速膨胀
gulpfile.js
。对于复杂的构建环境,很容易产生如此多的任务和依赖项,以至于没有人能够知道发生了什么

要在任务结束时连续执行子任务,请使用清除
src
流,然后使用有效地创建新流

package.json

“开发依赖性”:{
“大口添加src”:“~0.2”,
“吞咽忽略”:“~2.0”,
gulpfile.js

const addsrc=require('gulp-add-src');
const ignore=require('gulp-ignore');
...
gulp.task('generate-css',()=>
gulp.src('site/patterns/site/site.scss'))
.pipe(sass().on('error',sass.logError))
...
.pipe(ignore.exclude(true))//清除src乙烯基流
.pipe(addsrc.prepend('assets/css/index-*.css')//新流
.pipe(revolderated())
.管道(清洁剂())
);

这种方法使任务更加内聚,但当有疑问时,可以使用单独的任务。

确实,不应将单独的任务合并或转换为单个管道,但将每个微小的子任务提升为单独的任务,只是为了确保它以正确的顺序执行,可能会快速膨胀您的
gulpfile.js
在复杂的构建环境中,很容易产生如此多的任务和依赖项,以至于没有人知道发生了什么

要在任务结束时连续执行子任务,请使用清除
src
流,然后使用有效地创建新流

package.json

“开发依赖性”:{
“大口添加src”:“~0.2”,
“吞咽忽略”:“~2.0”,
gulpfile.js

const addsrc=require('gulp-add-src');
const ignore=require('gulp-ignore');
...
gulp.task('generate-css',()=>
gulp.src('site/patterns/site/site.scss'))
.pipe(sass().on('error',sass.logError))
...
.pipe(ignore.exclude(true))//清除src乙烯基流
.pipe(addsrc.prepend('assets/css/index-*.css')//新流
.pipe(revolderated())
.管道(清洁剂())
);
这种方法使任务更具凝聚力,但当有疑问时,可以使用单独的任务