2016-01-31 1 views
0

Я бегу простой конфигурации:После «HTML» задача файл index.html до сих пор не существует в Глоток

gulp.task('html', function() { 
    gulp.src(config.paths.html) 
     .pipe(gulp.dest(config.paths.dist)) 
     .pipe(connect.reload()); 
}); 

gulp.task('connect', function() { 
    server.listen(config.port); 
    lrserver.listen(config.livereloadport); 
}); 

gulp.task('open', ['connect'], function() { 
    gulp.src('dist/index.html') 
     .pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/'})); 
}); 

gulp.task('default', ['html', 'open']); 

Но, в первый раз на «открытом» файла задания index.html до сих пор не существует, и только второй время будет создано, а задача «open» будет выполнена успешно. Что случилось с моей конфигурацией?

Я добавить журнал консоли:

D:\Projects\demo>gulp 
[11:01:13] Using gulpfile D:\Projects\demo\gulpfile.js 
[11:01:13] Starting 'connect'... 
[11:01:13] Finished 'connect' after 4.33 ms 
[11:01:13] Starting 'html'... 
[11:01:13] Finished 'html' after 9.03 ms 
[11:01:13] Starting 'open'... 
[11:01:13] Finished 'open' after 3.14 ms 
[11:01:13] Starting 'default'... 
[11:01:13] Finished 'default' after 9.82 μs 

ответ

0

Ваши задачи зависит друг от друга. Вы должны сделать «открытым» зависит от «HTML», так ВЗ будет ждать его, чтобы закончить:

gulp.task('html', function() { 
    gulp.src(config.paths.html) 
     .pipe(gulp.dest(config.paths.dist)) 
     .pipe(connect.reload()); 
}); 

gulp.task('connect', function() { 
    server.listen(config.port); 
    lrserver.listen(config.livereloadport); 
}); 

gulp.task('open', ['connect', 'html'], function() { 
    gulp.src('dist/index.html') 
     .pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/'})); 
}); 

gulp.task('default', ['open']); 
+0

К сожалению, это не работает для меня. Посмотрите на консольный журнал. В обоих случаях порядок правильный. Что не так? – Sergiy

+0

Попробуйте добавить ./ к началу открытого пути src. Также попробуйте запустить только html и убедитесь, что файл существует в dist/index.html –

+0

./ не помогает. Я добавляю console.log (fs.existsSync ('./ dist/index.html)); к «открытой» задаче, и она выводит false в первый раз, но верно во второй раз. Таким образом, файл ./dist/index.html был создан только после задачи «по умолчанию». – Sergiy

0

Итак, я нашел решение. По умолчанию все задачи в gulp работают параллельно. Итак, вам нужно зависимость задачи, если вы хотите запускать их последовательно, как ответил eburger перед:

gulp.task('open', ['connect', 'html'], function() { 
    gulp.src('dist/index.html') 
     .pipe(open({ uri: config.devBaseUrl + ':' + config.port + '/'})); 
}); 

Но кроме этого вам необходимо также получить глотка знать, когда предыдущая задача была закончена (добавлено возвращение):

gulp.task('html', function() { 
    return gulp.src(config.paths.html) 
     .pipe(gulp.dest(config.paths.dist)) 
     .pipe(connect.reload()); 
}); 

Это решило мою проблему.

Смежные вопросы