2017-02-06 7 views
0

я сделал несколько HTML-файлы в моем хранилище für различные точки зрения моего сайта:Глоток-usemin несколько файлов HTML

  • index.html
  • news.html
  • page.html

Но моя задача сборки gulp только строит один из файлов не всех.

gulp.task('build:usemin', ['build:cleanfolder', 'build:cleanfiles'], function() { 
    var stream = gulp.src('./src/**/*.html') 
    .pipe(useMin({ 
     css: [minifyCss(), 'concat'], 
     js: [minifyJs(), 'concat'], 
     html: [minifyHtml({collapseWhitespace: true})] 
    })) 
    .pipe(gulp.dest(distPath)); 
    return stream; 
}); 

Есть ли у кого-нибудь идеи, как я могу это исправить? Спасибо.

Моего полный gulpfile.js

//////////////////// 
// Modules 
//////////////////// 
var gulp = require('gulp'), 
    sass = require('gulp-sass'), 
    sassLint = require('gulp-sass-lint'), 
    jsHint = require('gulp-jshint'), 
    minifyJs = require('gulp-uglify'), 
    minifyCss = require('gulp-minify-css'), 
    minifyHtml = require('gulp-htmlmin'), 
    minifyImages = require('gulp-imagemin'), 
    useMin = require('gulp-usemin'), 
    del = require('del'), 
    browserSync = require('browser-sync').create(); 


//////////////////// 
// Constants 
//////////////////// 
const distPath = './dist'; 


//////////////////// 
// Tasks 
//////////////////// 

// Sass 
gulp.task('sass', function() { 
    gulp.src('./src/sass/**/*.scss') 
     .pipe(sassLint({ 
      options: { 
       formatter: 'stylish', 
       configFile: './.sass-lint.yml' 
      }, 
     })) 
     .pipe(sassLint.format()) 
     .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) 
     .pipe(gulp.dest('./src/css')) 
}); 

// Check JavaScripts 
gulp.task('scripts-check', function() { 
    gulp.src('src/js/**/*.js') 
    .pipe(jsHint()) 
    .pipe(jsHint.reporter('jshint-stylish')) 
}); 

// Browsersync 
gulp.task('browser-sync', function() { 
    browserSync.init({ 
     server: { 
      baseDir: './src/' 
     }, 
     notify: false 
    }); 
}); 

// Watch 
gulp.task('watch', function() { 
    gulp.watch('./src/js/**/*.js', ['scripts-check']); 
    gulp.watch('./src/sass/**/*.scss', ['sass']); 
    gulp.watch(['./src/*.html', './src/css/*.css', './src/js/*.js']).on('change', browserSync.reload); 
}); 

// Serve 
gulp.task('serve', ['sass', 'scripts-check', 'browser-sync', 'watch']); 


//////////////////// 
// Build Tasks 
//////////////////// 
gulp.task('build:cleanfolder', function() { 
    return del(distPath).then(paths => { 
     console.log('Deleted files and folders:\n', paths.join('\n')); 
    }); 
}); 

gulp.task('build:copyfiles', ['build:cleanfolder'], function() { 
    var stream = gulp.src([ 
     'src/**', 
    ]) 
    .pipe(gulp.dest(distPath)); 
    return stream; 
}); 

gulp.task('build:cleanfiles', ['build:copyfiles'], function() { 
    return del([ 
     distPath + '/**/*.html', 
     distPath + '/sass', 
     distPath + '/css', 
     distPath + '/js', 
     distPath + '/images', 
     distPath + '/bower_components' 
    ]) 
    .then(paths => { 
     console.log('Deleted files and folders:\n', paths.join('\n')); 
    }); 
}); 

gulp.task('build:usemin', ['build:cleanfolder', 'build:cleanfiles'], function() { 
    var stream = gulp.src('./src/**/*.html') 
    .pipe(useMin({ 
     css: [minifyCss(), 'concat'], 
     js: [minifyJs(), 'concat'], 
     html: [ function(){ return minifyHtml({collapseWhitespace: true});} ] 
    })) 
    .pipe(gulp.dest(distPath)); 
    return stream; 
}); 

gulp.task('build:minify-images', ['build:cleanfolder', 'build:cleanfiles'], function() { 
    var stream = gulp.src('./src/images/**/*.{png,gif,jpg,svg}') 
    .pipe(minifyImages()) 
    .pipe(gulp.dest(distPath + '/images')); 
    return stream; 
}); 

gulp.task('build:sass', ['build:cleanfolder', 'build:cleanfiles'], function() { 
    var stream = gulp.src('./src/sass/**/*.scss') 
    .pipe(sass({outputStyle: 'compressed'})) 
    .pipe(gulp.dest(distPath + '/css')) 
    return stream; 
}); 

gulp.task('build:serve', function() { 
    browserSync.init({ 
     server: { 
      baseDir: distPath 
     }, 
     notify: false 
    }); 
}); 

gulp.task('build', ['build:sass', 'build:usemin', 'build:minify-images']); 

ответ

0

согласно documentation

Если вам нужно вызвать один и тот же трубопровод дважды, вам нужно определить каждую задачу как функция, которая возвращает объект потока который должен использоваться.

Поэтому:

gulp.task('build:usemin', ['build:cleanfolder', 'build:cleanfiles'], function() { 
    var stream = gulp.src('./src/**/*.html') 
    .pipe(useMin({ 
     css: [minifyCss(), 'concat'], 
     js: [minifyJs(), 'concat'], 
     html: [ function(){ return minifyHtml({collapseWhitespace: true});} ] 
    })) 
    .pipe(gulp.dest(distPath)); 
    return stream; 
}); 
+0

И как я могу назвать мою функцию, то часто? –

+0

Использовать фрагмент, который я опубликовал. Он возвращает функцию, а не результат, поэтому поток может продолжаться. –

+0

Я пробовал, но он не работает. –