使用gulp-usemin更新多个html文件

时间:2015-02-14 22:06:48

标签: javascript gulp browserify

我正在使用gulp-usemin,它只在更新单个html文件时工作正常,但是当我尝试更新多个html文件时,它会崩溃。这是我的usemin任务。请注意,我已经复制了代码,一次是login.html文件,另一次是index.html文件。我想要做的只是传递像gulp.src([_appdir + '/login.html', _appdir + '/index.html'], {base: _appdir})这样的人,但那似乎是我的任务炸弹。即使尝试使用*.html而我也遇到了同样的问题。

gulp.task('usemin', ['browserify', 'sass'], function() {
  gulp.src([_appdir + '/images/**/*'], {base: _appdir})
    .pipe(gulp.dest(_publicdir));

  gulp.src([_appdir + '/login.html'], {base: _appdir})
    .pipe(usemin({
      css: [minifyCss({keepSpecialComments: 0}), 'concat', rev()],
      html: [gulpif(argv.production, minifyHtml({conditionals: true, quotes: true}))],
      jsOldIE: [uglify(), rev()],
      jsVendor: [uglify(), rev()],
      jsBundle: [
        gulpif(argv.production, rev()),
        gulpif(argv.production, uglify()),
        gulpif(argv.production, rename({suffix: '.min'}))
      ]
    }))
    .pipe(gulp.dest(_publicdir));

  return gulp.src([_appdir + '/index.html'], {base: _appdir})
    .pipe(usemin({
      css: [minifyCss({keepSpecialComments: 0}), 'concat', rev()],
      html: [gulpif(argv.production, minifyHtml({conditionals: true, quotes: true}))],
      jsOldIE: [uglify(), rev()],
      jsVendor: [uglify(), rev()],
      jsBundle: [
        gulpif(argv.production, rev()),
        gulpif(argv.production, uglify()),
        gulpif(argv.production, rename({suffix: '.min'}))
      ]
    }))
    .pipe(gulp.dest(_publicdir));
});

3 个答案:

答案 0 :(得分:2)

gulp-usemin目前有一个错误,阻止您使用同名的多个<!-- build:name ... -->条评论。如果同一文件中有两个<!-- build:css ... -->部分,这也会触发错误。

我最后使用useref,而我甚至不需要更改HTML。

答案 1 :(得分:0)

这个问题很老但问题很常见,网上很多人都在寻找解决方案,谷歌搜索结果中没有明确的解决方案。我是gulp和webdev的新手,很抱歉给您带来不便。

对于没有参数的简单函数,您只需删除括号:

jsOldIE: [uglify, rev],

如果您需要参数,请创建匿名函数

css: [
    function() { return minifyCss({keepSpecialComments: 0}); }, 
    'concat', rev],

答案 2 :(得分:0)

你需要使用gulp-foreach

gulp.task('usemin', ['browserify', 'sass'], function() {
  gulp.src([_appdir + '/images/**/*'], {base: _appdir})
    .pipe(gulp.dest(_publicdir));

  return gulp.src([_appdir + '/login.html', _appdir + '/index.html'], {base: _appdir})
    .pipe(foreach(function (stream, file) {

      return stream.pipe(usemin({
        css: [minifyCss({keepSpecialComments: 0}), 'concat', rev()],
        html: [gulpif(argv.production, minifyHtml({conditionals: true, quotes: true}))],
        jsOldIE: [uglify(), rev()],
        jsVendor: [uglify(), rev()],
        jsBundle: [
          gulpif(argv.production, rev()),
          gulpif(argv.production, uglify()),
          gulpif(argv.production, rename({suffix: '.min'}))
        ]
      }))
      .pipe(gulp.dest(_publicdir));
    }))
})