gulp tâches ont échoué avec EEXIST erreurs

Ce matin, mon gulp script de construction a commencé à défaut; autre que de faire mon travail habituel dans le répertoire du projet, je n'ai pas fait d'autres modifications à mon système.

J'ai un répertoire /src avec divers fragments de HTML, les images, le javascript, les MOINS, et je suis en utilisant gulp pour compiler/concaténer/copier et de les placer dans le répertoire /web. Le "défaut" l'exécution de la tâche d'une "construction" de la tâche, qui appelle toutes les autres tâches, puis avaler.la montre est mis en place pour regarder les répertoires pour les changements, et d'exécuter la tâche appropriée est un changement est constaté.

Au début de chaque tâche, j'utilise des del() pour nettoyer le dossier de destination. Cependant, lorsque vient le temps de placer le contenu dans le dossier de destination, la tâche échoue avec un "EEXIST' erreur, ou de la tâche se termine bien, et certains fichiers sont au hasard manquant dans le répertoire de sortie.

Voici mon invite de commande qui montre les tâches à défaut au hasard:

> user$ gulp
[11:58:02] Using gulpfile PROJECTPATH/gulpfile.js
[11:58:02] Starting 'styles'...
[11:58:02] Starting 'scripts'...
[11:58:02] Starting 'images'...
[11:58:02] Starting 'fonts'...
[11:58:02] Starting 'html'...
[11:58:03] Finished 'styles' after 726 ms
[11:58:03] gulp-imagemin: Minified 1 image (saved 7.38 kB - 10.4%)
[11:58:03] Finished 'fonts' after 714 ms
[11:58:03] Finished 'images' after 722 ms
[11:58:03] Finished 'scripts' after 741 ms
[11:58:03] Finished 'html' after 737 ms
[11:58:03] Starting 'build'...
[11:58:03] Finished 'build' after 9.61 μs
[11:58:03] Starting 'default'...
[11:58:03] Finished 'default' after 125 ms
> user$ gulp
[11:58:22] Using gulpfile PROJECTPATH/gulpfile.js
[11:58:22] Starting 'styles'...
[11:58:22] Starting 'scripts'...
[11:58:22] Starting 'images'...
[11:58:22] Starting 'fonts'...
[11:58:22] Starting 'html'...
[11:58:22] 'scripts' errored after 86 ms
[11:58:22] Error: EEXIST, mkdir 'PROJECTPATH/web/project_files/js'
[11:58:22] 'fonts' errored after 74 ms
[11:58:22] Error: ENOENT, open 'PROJECTPATH/web/project_files/fonts/glyphicons-halflings-regular.eot'
[11:58:23] 'html' errored after 144 ms
[11:58:23] Error: EEXIST, mkdir 'PROJECTPATH/web/project_files/templates/instruction'
[11:58:23] Finished 'styles' after 728 ms
[11:58:23] gulp-imagemin: Minified 1 image (saved 7.38 kB - 10.4%)
[11:58:23] Finished 'images' after 736 ms
> user$ gulp
[11:58:28] Using gulpfile PROJECTPATH/gulpfile.js
[11:58:28] Starting 'styles'...
[11:58:28] Starting 'scripts'...
[11:58:28] Starting 'images'...
[11:58:28] Starting 'fonts'...
[11:58:28] Starting 'html'...
[11:58:28] Finished 'styles' after 729 ms
[11:58:28] Finished 'fonts' after 707 ms
[11:58:28] Finished 'scripts' after 737 ms
[11:58:28] gulp-imagemin: Minified 1 image (saved 7.38 kB - 10.4%)
[11:58:28] Finished 'images' after 733 ms
[11:58:28] Finished 'html' after 740 ms
[11:58:28] Starting 'build'...
[11:58:28] Finished 'build' after 9.73 μs
[11:58:28] Starting 'default'...
[11:58:28] Finished 'default' after 120 ms
> user$ gulp
[11:58:34] Using gulpfile PROJECTPATH/gulpfile.js
[11:58:34] Starting 'styles'...
[11:58:34] Starting 'scripts'...
[11:58:34] Starting 'images'...
[11:58:34] Starting 'fonts'...
[11:58:34] Starting 'html'...
[11:58:34] 'scripts' errored after 95 ms
[11:58:34] Error: EEXIST, mkdir 'PROJECTPATH/web/project_files/js'
[11:58:34] 'fonts' errored after 84 ms
[11:58:34] Error: ENOENT, open 'PROJECTPATH/web/project_files/fonts/glyphicons-halflings-regular.eot'
[11:58:34] 'html' errored after 143 ms
[11:58:34] Error: EEXIST, mkdir 'PROJECTPATH/web/project_files/templates/instruction'
[11:58:35] Finished 'styles' after 737 ms
[11:58:35] gulp-imagemin: Minified 1 image (saved 7.38 kB - 10.4%)
[11:58:35] Finished 'images' after 742 ms

Voici le gulp fichier que j'utilise:

var gulp = require('gulp'),
less = require('gulp-less'),
autoprefixer = require('gulp-autoprefixer'),
minifycss = require('gulp-minify-css'),
jshint = require('gulp-jshint'),
uglify = require('gulp-uglify'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
concat = require('gulp-concat'),
fileinclude = require('gulp-file-include'),
cache = require('gulp-cache'),
gutil = require('gulp-util'),
rename = require('gulp-rename'),
merge = require('merge-stream'),
del = require('del'),
libraries = [
'src/js/jquery-*.js',
'src/js/bootstrap/transition.js',
'src/js/bootstrap/collapse.js',
'src/js/bootstrap/modal.js',
'src/js/bootstrap/affix.js',
'src/js/bootstrap-datepicker.js',
'src/js/bootbox.js',
'src/js/chosen.jquery.js',
'src/js/underscore.js',
'src/js/sha1.js',
'src/js/DeviceIdConverter.js',
'src/js/custom.js'
],
ieLibraries = [
'src/js/html5shiv.js',
'src/js/respond.js'
],
appConfig = [
'src/js/country.json',
'src/js/locations.json',
'src/js/make_model.json',
'src/js/project.js'
];
gulp.task('styles', function() {
del(['web/project_files/css']);
return gulp.src('src/less/project.less')
.pipe(less())
.pipe(gulp.dest('web/project_files/css'))
});
gulp.task('scripts', function() {
del(['web/project_files/js']);
var libraryStream = gulp.src(libraries)
.pipe(concat('libraries.js')),
ieLibraryStream = gulp.src(ieLibraries)
.pipe(concat('ie8.js')),
appConfigStream = gulp.src(appConfig)
.pipe(rename(function(path) {
path.extname = '.js';
}));
return merge(libraryStream, ieLibraryStream, appConfigStream)
.pipe(gulp.dest('web/project_files/js'));
});
gulp.task('images', function() {
del(['web/project_files/img']);
return gulp.src('src/img/**/*.+(jpg|png)')
.pipe(imagemin({optimizationLevel: 3, progressive: true, interlaced: true }))
.pipe(gulp.dest('web/project_files/img'))
});
gulp.task('fonts', function() {
del(['web/project_files/fonts']);
return gulp.src('src/fonts/**/*.+(eot|svg|ttf|woff|otf)')
.pipe(rename(function(path) {
path.dirname = '';
}))
.pipe(gulp.dest('web/project_files/fonts'));
});
gulp.task('html', function() {
del(['web/project.htm']);
del(['web/project_files/templates']);
var htmlStream = gulp.src('src/html/index.html')
.pipe(fileinclude())
.pipe(rename('project.htm'));
var templateStream = gulp.src('src/html/templates/**/*.html')
.pipe(rename(function(path) {
path.dirname = "/project_files/templates/"+path.dirname;
path.extname = ".tpl";
}));
return(merge(htmlStream, templateStream))
.pipe(gulp.dest('web'));
});
gulp.task('build', ['styles', 'scripts', 'images', 'fonts', 'html'], function() {
});
gulp.task('default', ['build'], function() {
gulp.watch('src/html/**/*.html', ['html']);
gulp.watch('src/less/**/*.less', ['styles']);
gulp.watch('src/js/**/*.js', ['scripts']);
gulp.watch('src/img/**/*.+(jpg|png)', ['images']);
gulp.watch('src/fonts/**/*.+(eot|svg|ttf|woff|otf)', ['fonts']);
});

Le message d'erreur indique l'emplacement de destination existe, mais elle ne devrait pas (del) en enlevant le répertoire de destination au début de chaque tâche enfant?

Mise à JOUR:

Ici est la façon dont je structure mes tâches à maintenant, ce qui semble être de travailler vite et correctement:

gulp.task('scripts', function() {
del(['web/js'], function(err) {
if (err) return;
return gulp.src('src/js/**/*.js')
.pipe(concat('mything.js'))
.pipe(gulp.dest('web/js'));
});
});
InformationsquelleAutor ouni | 2014-11-04