2014-12-20 5 views
0

Каждый раз, когда я запускаю задачу gulp, он генерирует ошибку при первом запуске. Ошибка ниже. Когда я запускаю его снова, он создается без ошибок.Устранение ошибки сборки при запуске gulp

Я смущен, почему он бросает ошибку в первый раз, но не после этого.

[08:38:08] Using gulpfile ~/Documents/Code/proj2/Gulpfile.js 
[08:38:08] Starting 'stylus'... 
[08:38:08] Finished 'stylus' after 7.99 ms 
[08:38:08] Starting 'copyClientHTML'... 
[08:38:08] Finished 'copyClientHTML' after 2.27 ms 
[08:38:08] Starting 'clientLint'... 
[08:38:08] Starting 'demon'... 
[08:38:08] Finished 'demon' after 1.88 ms 
[gulp] [nodemon] v1.2.1 
[gulp] [nodemon] to restart at any time, enter `rs` 
[gulp] [nodemon] watching: *.* 
[gulp] [nodemon] starting `node server/js/server.js` 
[08:38:08] Starting 'watch'... 
[08:38:09] Finished 'watch' after 31 ms 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: ENOENT, stat '/Users/jhans/Documents/Code/proj2/client/build/index.html' 

В том числе Gulpfile.

/*jshint globalstrict: true*/ 
'use strict'; 

var gulp = require('gulp'), 
    browserify = require('gulp-browserify'), 
    clean = require('gulp-clean'), 
    jshint = require('gulp-jshint'), 
    stylish = require('jshint-stylish'), 
    stylus = require('gulp-stylus'), 
    del = require('del'), 
    nodemon = require('gulp-nodemon'), 
    concat = require('gulp-concat'); 

var paths = { 
    client: { 
    scripts: 'client/js/**/*.js', 
    html: 'client/views/*.html', 
    index: 'client/*.html', 
    css: 'client/css/*.styl', 
    conf: 'client/conf.js' 
    }, 
    server: { 
    scripts: 'server/js/**/*.js' 
    } 

}; 

// Rerun the task when a file changes 
gulp.task('watch', function() { 
    gulp.watch(paths.client.css, ['stylus']); 
    gulp.watch(paths.client.scripts, ['browserify']); 
    gulp.watch([paths.client.html, paths.client.index], ['copyClientHTML']); 
    gulp.watch(paths.server.scripts, ['serverLint']); 
}); 


gulp.task('demon', function() { 
    nodemon({ 
    script: 'server/js/server.js', 
    ext: 'js', 
    env: { 
     'NODE_ENV': 'development' 
    } 
    }) 
    .on('start', ['watch']) 
    .on('change', ['watch']) 
    .on('restart', function() { 
     console.log('restarted!'); 
    }); 
}); 

// Default Task 
gulp.task('default', ['build', 'demon']); 

gulp.task('build', ['stylus', 'copyClientHTML', 'browserify']); 


/********** Building CSS *********/ 
gulp.task('stylus', function() { 

    del(['client/build/css/*']); 

    gulp.src(paths.client.css) 
    .pipe(stylus()) 
    .pipe(concat('all.css')) 
    .pipe(gulp.dest('client/build/css/')); 
}); 


gulp.task('clientLint', function() { 
    return gulp.src([paths.client.scripts]) 
    .pipe(jshint()) 
    .pipe(jshint.reporter(stylish)); 
}); 


gulp.task('serverLint', function() { 
    return gulp.src([paths.server.scripts]) 
    .pipe(jshint()) 
    .pipe(jshint.reporter(stylish)); 
}); 


gulp.task('browserify',['clientLint'], function() { 

    del(['client/build/js/*']); 

    gulp.src('client/js/app.js') 
    .pipe(browserify({ 
     insertGlobals: true, 
     debug: true 
    })) 
    .pipe(gulp.dest('client/build/js')); 
}); 


gulp.task('copyClientHTML', function() { 
    del(['client/build/views/*.*']); 
    del(['client/build/index.html']); 

    gulp.src(paths.client.html) 
    .pipe(gulp.dest('client/build/views')); 

    gulp.src(paths.client.index) 
    .pipe(gulp.dest('client/build')); 

}); 
+0

Как выглядит ваш gulpfile? Без него невозможно сказать. – Heikki

+0

Я бы предположил, что что-то зависит от того, что '/ Users/jhans/Documents/Code/proj2/client/build/index.html' существует, и первый запуск создает это. – Heikki

ответ

0

Ваша проблема может исходить от вашей copyClientHTML задачи (и потенциально некоторые другие).

Действительно, вы должны знать, что модуль del не работает синхронно. Таким образом, он может удалить ваши файлы после их создания и объяснить причину, которую вы испытываете.

Я могу посоветовать вам создать задачу, предназначенную для очистки ваших файлов, которую вы можете использовать как зависимость от некоторых ваших задач; или лучше немного, где вы можете передать параметр для очистки указанных папок.

Это гарантирует, что очистка закончится перед созданием новых файлов.

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