0

我一直在研究如何使用 gulp 构建系统自动化开发过程。

我在修改我的样式表时遇到了一些问题。我已经使用 gulp-rev 生成带有更新修订号的文件,但它会继续在文件内的任何更改上创建额外的文件,这会导致我的设置大小增加。

gulpfile.js

var gulp = require('gulp');
var watchLess = require('gulp-watch-less');
var less = require('gulp-less');
var plumber = require('gulp-plumber');
var watch = require('gulp-watch');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var cleanCSS = require('gulp-clean-css');
var autoprefixer = require('gulp-autoprefixer');
var revAppend = require('gulp-rev-append');

//LESS
gulp.task('less', function() {
    return gulp.src('assets/less/*.less')
        .pipe(watchLess('assets/less/*.less'))
        .pipe(less())
        .pipe(autoprefixer({
            browsers: ['> 0%'],
            cascade: false
        }))
        .pipe(cleanCSS())
        .pipe(gulp.dest('assets/css/'))
        .pipe(rev())
        .pipe(gulp.dest('assets/css/'))
        .pipe(revAppend())
        .pipe(gulp.dest('assets/css'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('assets/'));
});

//Watch
gulp.task('watch', function(){
    gulp.watch('assets/less/*.less', ['less']);
})

//Default
gulp.task('default', ['watch']);

我需要帮助来创建具有更新更改的最新文件,并从文件目录中删除以前的文件,或者仅在文件中提供最新更新/更改的文件。

我还使用了其他几个与 rev 相关的插件,但找不到正确的配置方法

4

1 回答 1

0

好吧,您有四个带有目标位置的管道。

.pipe(gulp.dest('assets/css/'))
.pipe(gulp.dest('assets/css/'))
.pipe(gulp.dest('assets/css'))
.pipe(gulp.dest('assets/'));

其中三个目的地相同。期望在不同阶段拥有管道中所有文件的三个副本。使用 gulp-rev 你需要一个额外的管道用于清单,但这仍然给我们留下 2 而不是 4。

尝试:

//LESS
gulp.task('less', function() {
    return gulp.src('assets/less/*.less')
        .pipe(watchLess('assets/less/*.less'))
        .pipe(less())
        .pipe(autoprefixer({
            browsers: ['> 0%'],
            cascade: false
        }))
        .pipe(cleanCSS())
        .pipe(rev())
        .pipe(revAppend())
        .pipe(gulp.dest('assets/css'))
        // WARNING!!! Put the manifest after all the file pipes
        .pipe(rev.manifest())
        .pipe(gulp.dest('assets/'));
});

如果您想修改包并将文件修改责任留给源代码控制或构建服务器,这里是关于重新构想的帖子。

于 2016-04-04T12:28:21.047 回答