1

我对 gulp 完全陌生,我想添加一个任务来缩小并最终清理任何重复或未使用的 css。我的 gulpfile 在下面,目前我仍在学习中。

我知道稍后我将使用 post-css 和可以与之配套的模块。现在我收到一个错误:"Cannot read property 'on' of undefined at DestroyableTransform.Readable.pipe". 它来自cleancss任务,当我把它拿出来时,没有错误。任何帮助和建议将不胜感激。

//JS
var gulp = require('gulp');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var cleancss = require('clean-css');
var autoPrefixer = require('gulp-autoprefixer');

gulp.task('autoPrefixer', function() {
    return gulp.src('../css/*.css')
        .pipe(autoPrefixer ({
            browsers: ['last 2 versions'],
            }))
            .pipe(gulp.dest('../css'))
    });

gulp.task('cleancss', function() {
  return gulp.src('../css/*.css')
    .pipe(cleancss({compatibility: 'ie8'}))
    .pipe(gulp.dest('../css/min'));
});


gulp.task('sass', function(){
  return gulp.src('../scss/*.scss')
    .pipe(sass().on('error', function(err) {
      console.error('\x07'); // so it doesn't just fail (literally) silently!
      sass.logError.bind(this)(err);
    })) // Converts Sass to CSS with gulp-sass
    .pipe(gulp.dest('../css'))
    .pipe(autoPrefixer())
    .pipe(browserSync.reload({
        stream: true
    }))
});


gulp.task('watch', ['browserSync','sass','autoPrefixer','cleancss'], function() {
    gulp.watch('../scss/*.scss', ['sass']);
    gulp.watch('../*.php', browserSync.reload);
    gulp.watch('../js/*.js', browserSync.reload);
});

gulp.task('browserSync', function() {
    browserSync.init ({
        open: 'external',
        host: 'testsite.local',
        proxy: 'testsite.local',
        port: 3000
    })
        browserSync ({
        server: {
            baseDir: 'app'
        },
    })

});
4

2 回答 2

2

您应该为 cleancss 使用 gulp 插件,而不是直接使用 cleancss。

var cleancss = require('gulp-clean-css');

代替

var cleancss = require('clean-css');

如果您还没有安装它,请记住安装它:

npm install gulp-clean-css --save-dev
于 2017-12-03T20:28:19.057 回答
0

实际上,我设法通过使用此处讨论的“vynil-map”使其工作:https ://github.com/jakubpawlowicz/clean-css/issues/342 。希望这个链接可以帮助其他有同样问题的人。

于 2017-12-04T15:09:14.383 回答