为什么这个Gulp片段中有多个gulp.dest()?

时间:2017-09-29 08:53:44

标签: css gulp

我找到了以下Gulp片段,我对此有疑问。正如您所看到的,gulp.dest('app/assets/css')部分有两次,一次是在自动修复之后,一次是在结束时。我试图删除第一个,只留下最后一个,我没有看到任何区别。所以我的问题是有没有任何理由第一次gulp.dest或它可以被删除?可能是重命名任务或cssnano任务要求文件已经在目的地吗?

gulp.task('css', function () {
    return gulp.src('src/scss/style.scss')
    .pipe(sourcemaps.init())
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer('last 2 version'))
    .pipe(gulp.dest('app/assets/css'))
    .pipe(cssnano())
    .pipe(rename({ suffix: '.min' }))
    .pipe(header(banner, { package : package }))
    .pipe(sourcemaps.write())
    .pipe(gulp.dest('app/assets/css'))
    .pipe(browserSync.reload({stream:true}));
});

1 个答案:

答案 0 :(得分:0)

似乎这个脚本也在创建sourcemaps文件,并且还把它放到了

  

资产/ CSS

目录。实际上你可以删除这两行:

.pipe(sourcemaps.write())
.pipe(gulp.dest('app/assets/css'))

如果您当然不需要源图。

UPD: 如果您只删除第一个gulp.dest(),则第二个仍然只编写源映射,因为gulp.dest()命令只接受传递的数据并将其写入目标目录。在这种情况下,传递数据'只是源图。 在第一个gulp.dest()中,传递的数据是autoprefixed css。

.pipe(autoprefixer('last 2 version')) // autoprefixed css is ready
.pipe(gulp.dest('app/assets/css')) //css is passed to gulp.dest
........
.pipe(sourcemaps.write()) // sourcemaps are ready
.pipe(gulp.dest('app/assets/css')) // sourcemaps passed to gulp dest