Gulp pipe создание файлов и использование этих файлов - PullRequest
1 голос
/ 27 апреля 2020

Я играю с глотком, и я наткнулся на эту проблему, которую я не могу понять. У меня есть несколько задач:

gulp.task('concat-js', (done) => {
  gulp.src('src/app/**/*.js')
    .pipe(concat('app-script.js'))
    .pipe(gulp.dest('src/app/dist/'));

  done();
});

gulp.task('minify-js', (done) => {
  gulp.src('src/app/dist/*.js')
    .pipe(minify({noSource: true, ignoreFiles: ['*-min.js']}))
    .pipe(gulp.dest('src/app/dist/'));

  done();
});

gulp.task('compress',
  gulp.series('concat-js', 'minify-js', function(done) {
    // default task code here
    done();
  })
);

gulp.task(
  'run',
  gulp.series('compress', () => {
  ...
  }
));

Моя цель состоит в том, чтобы при выполнении run я получал конкатенацию моих исходных файлов, а затем уменьшенную версию этого файла. Но у меня проблемы с выполнением этих задач последовательно. Когда я выполняю , запускаю в первый раз, приложение не запускается и создается только app-script. js. Второй запуск программы создает файл app-script-min. js.

Насколько я понимаю, minify- js не ждет concat- js до конца sh создание файла.

1 Ответ

0 голосов
/ 27 апреля 2020

Я думаю, это может быть потому, что done () вызывается до завершения gulp. Попробуйте изменить

gulp.task('concat-js', (done) => {
  gulp.src('src/app/**/*.js')
    .pipe(concat('app-script.js'))
    .pipe(gulp.dest('src/app/dist/'));

  done();
});

на

gulp.task('concat-js', (done) => {
  gulp.src('src/app/**/*.js')
    .pipe(concat('app-script.js'))
    .pipe(gulp.dest('src/app/dist/'))
    .on('finish', function() {
        done();
    });

});

Я также нашел этот ресурс, который может быть вам интересен. http://www.ericcredeur.com/gulp/javascript/2015/07/15/cascading-gulp-tasks.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...