首页 > 解决方案 > Gulp 任务未完成

问题描述

对 gulp 来说是新手。我有以下任务。我需要生成一个网络服务器,然后另一个脚本必须针对这个网络服务器运行一些东西。我目前正在努力完成脚本,因为浏览器同步任务没有完成并阻止脚本退出。

'use strict';

const browserSync = require('browser-sync').create();
const cp = require('child_process');
const minimalcss = require('minimalcss');

const gulp = require('gulp');

const clean = require('gulp-clean');

const sourceDir = "_site/";
const deployDir = "public/";

// build the mkdocs Site
gulp.task('build', function() {
  return cp.exec('pipenv run mkdocs build --site-dir ' + sourceDir);
});

// Delete _deploy directory first
gulp.task('prepare', function() {
  return gulp.src(deployDir, {read: false, allowEmpty: true})
      .pipe(clean());
});

// Delete _deploy directory again  // just for testing
gulp.task('cleanup', function() {
  return gulp.src(deployDir, {read: false, allowEmpty: true})
      .pipe(clean());
});

// does not lead to anything, just for testing
gulp.task('inlinecriticalCSS', function(done) {
  minimalcss
    .minimize({ urls: ['http://localhost:9999/' + 'index.html'] })
    .then(result => {
    console.log('OUTPUT', result.finalCss.length, result.finalCss);
  })
  .catch(error => {
    console.error(`Failed the minimize CSS: ${error}`);
  });
  done();
});

// webserver
gulp.task('serve', (done) => {
  browserSync.init({
    port: 9999,
    server: {
      baseDir: sourceDir
    }
  });
  done();
});

// default sequence
gulp.task('default', gulp.series(
  'prepare', 
  'build', 
  'serve',
  'inlinecriticalCSS',
  'cleanup')
);

标签: gulpbrowser-syncgulp-browser-sync

解决方案


推荐阅读