Как я могу кодировать это более эффективно? - глоточное задание

Может быть, кто-то с немного большим опытом в Java-скрипте, чем я, может ответить на это Пока что я сделал копию и вставку из блока 'usemin', как показано в курсе. Вот код:

gulp.task('useminTrigger', ['deleteDistFolder'], function() {
  gulp.start("usemin", "usemin-de");
});

gulp.task('usemin', ['styles', 'scripts'], function () {
  return gulp.src("./app/index.html")
    .pipe(usemin({
      css: [function () {return rev()}, function () {return cssnano()}],
      js: [function () {return rev()}, function () {return uglify()}]
    }))
    .pipe(gulp.dest("./dist"));
});

gulp.task('usemin-de', ['styles', 'scripts'], function () {
  return gulp.src("./app/de/index.html")
    .pipe(usemin({
      css: [function () {return rev()}, function () {return cssnano()}],
      js: [function () {return rev()}, function () {return uglify()}]
    }))
    .pipe(gulp.dest("./dist/de"));
});

Сценарий работает так, как должен, но, возможно, есть более простой или более элегантный способ его кодирования.

И под элегантным я имею в виду: есть ли способ объединить блок usemin и блок usemin-de?

Помощь будет очень ценится. Заранее спасибо!

2 ответа

Если вы используете шарик в вашем gulp.src (то есть, если вы используете подстановочные знаки, чтобы выбрать файлы, которые вы хотите обработать gulp.task), структура исходного файла будет сохранена до конца gulp.dest,

Чтобы соответствовать просто app/index.html а также app/de/index.html Вы могли бы использовать шар './app/{,de}/index.html' (это также будет работать, чтобы использовать './app/{,de/}index.html' или же './app/{.,de}/index.html').

Тогда ваша задача будет

gulp.task('usemin', ['styles', 'scripts'], function () {
  return gulp.src('./app/{,de}/index.html')
    .pipe(usemin({
      css: [function () {return rev()}, function () {return cssnano()}],
      js: [function () {return rev()}, function () {return uglify()}]
    }))
    .pipe(gulp.dest("./dist"));
});

Это одна задача займет ./app/index.html а также ./app/de/index.html в качестве исходных файлов и будет выводить файлы ./dist/index.html а также ./dist/de/index.html,

Обратите внимание, что использование глобуса необходимо - если вы только что сделали gulp.src(['./app/index.html','./app/de/index.html']) относительная файловая структура не будет сохранена. Обработанная версия ./app/index.html будет написано ./dest/index.html, а затем обработанная версия ./app/de/index.html будет написано ./dest/index.html (переопределение первого выходного файла).

Вот хороший учебник для начинающих, и вот инструмент обучения тестера.

Ничто в Javascript или Gulp не мешает вам извлечь функцию:

Ваши задачи

gulp.task('useminTrigger', ['deleteDistFolder'], function() {
    gulp.start("usemin", "usemin-de");
});

gulp.task('usemin', ['styles', 'scripts'], function () {

    return createMinificationPipe("./app/index.html", "./dist");
});

gulp.task('usemin-de', ['styles', 'scripts'], function () {
    return createMinificationPipe("./app/de/index.html", "./dist/de");
});

Общая функция

function createMinificationPipe(src, dest){
    return gulp.src(src)
        .pipe(usemin({
          css: [function () {return rev()}, function () {return cssnano()}],
          js: [function () {return rev()}, function () {return uglify()}]
        }))
        .pipe(gulp.dest(dest));
}
Другие вопросы по тегам