2016-08-04 3 views
0

私のプロジェクトでは、以下のグループタスクが設定されています。 dist:imagesタスクを追加するまでは、すべてうまくいっていました。使用しているときクリーン&展開タスクを実行しているときにディレクトリに関する不満がありました

は今、他のすべての実行dist:watchタスクは、私は他の人が開始する前に、きれいなタスクを終えていることがわかりますエラー

Error: EEXIST: file already exists, mkdir '/Users/toby/src/my-project/dist/imgs' 

の原因となります。私はまた、他のタスクがそのフォルダを作成していないことをテストしました...だから、dist:imagesタスクはこのディレクトリを作成して、それについて不平を言っています!

は、ここで溶液は非常に飲み込むとタスクを見ることが関係している事前

+1

あなた 'distの中に' 'や' del.sync(config.distDir + "/ **/*") 'を返すデル(config.distDir + "/ **/*")を試してみてください。clean'仕事。 –

答えて

-1

であなたの助けのための

/** 
* dist:clean 
*/ 
gulp.task('dist:clean', function() { 
    del(config.distDir + "/**/*"); 
}); 

gulp.task('dist:html', ['dist:clean'], function() { 
    return gulp.src(config.htmlFiles) 
     .pipe(gulp.dest(config.distDir)); 
}); 

gulp.task('dist:images', ['dist:clean'], function() { 
    return gulp.src(config.imgFiles, {base: "web"}) 
     .pipe(gulp.dest(config.distDir)); 
}); 

gulp.task('dist:styles', ['dist:clean'], function() { 
    console.log(config.lessMainFile); 
    return gulp.src(config.lessMainFile) 
     .pipe(debug()) 
     .pipe(less().on('error', function (err) { 
      console.log(err); 
     })) 
     .pipe(cssmin().on('error', function (err) { 
      console.log(err); 
     })) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest(config.distDir + "/css")); 
}); 

gulp.task('dist:src', ['dist:clean', 'src']); 

/** 
* dist:browserify 
*/ 
gulp.task("dist:browserify", ['dist:src'], function() { 
    return browserify({ 
     basedir  : '.', 
     debug  : true, 
     entries  : [config.buildJsDir + '/src/main.js'], 
     cache  : {}, 
     packageCache: {} 
    }) 
     .bundle() 
     .pipe(source('js/main.js')) 
     .pipe(gulp.dest(config.distDir)); 
}); 

gulp.task('dist', ['dist:html', 'dist:images', 'dist:styles', 'dist:src', 'dist:browserify']); 


gulp.task('dist:watch', ['dist'], function() { 
    return gulp.watch(config.srcAllTypeScript.concat(config.webDir + "/**/*"), ['dist']); 
}); 

おかげで...コードです。 すべてのタスクでファイルが変更されるたびにconfig.imgFilesディレクトリが削除され、ファイルが変更されるたびにフォルダが作成されるため、OSシステムの競合状態になります。

これは、ビルドの最初の開始時にのみ使用されるdist:cleanタスクを持っています。

/** 
* dist:clean 
*/ 
gulp.task('dist:clean', function() { 
    del(config.distDir + "/**/*"); 
}); 

gulp.task('dist:html', function() { 
    return gulp.src(config.htmlFiles) 
     .pipe(gulp.dest(config.distDir)); 
}); 

gulp.task('dist:images', function() { 
    return gulp.src(config.imgFiles, {base: "web"}) 
     .pipe(gulp.dest(config.distDir)); 
}); 

gulp.task('dist:styles', function() { 
    console.log(config.lessMainFile); 
    return gulp.src(config.lessMainFile) 
     .pipe(debug()) 
     .pipe(less().on('error', function (err) { 
      console.log(err); 
     })) 
     .pipe(cssmin().on('error', function (err) { 
      console.log(err); 
     })) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest(config.distDir + "/css")); 
}); 

gulp.task('dist:src', function() { 
    // I did not see any `dist:src` task, so I added a placeholder 
}); 

/** 
* dist:browserify 
*/ 
gulp.task('dist:browserify', function() { 
    return browserify({ 
     basedir  : '.', 
     debug  : true, 
     entries  : [config.buildJsDir + '/src/main.js'], 
     cache  : {}, 
     packageCache: {} 
    }) 
     .bundle() 
     .pipe(source('js/main.js')) 
     .pipe(gulp.dest(config.distDir)); 
}); 

gulp.task('dist', ['dist:html', 'dist:images', 'dist:styles', 'dist:src', 'dist:browserify']); 


gulp.task('dist:watch', ['dist'], function() { 
    return gulp.watch(config.srcAllTypeScript.concat(config.webDir + "/**/*"), ['dist']); 
}); 

gulp.task('build', ['dist:clean', 'dist', 'dist:watch']); 
+0

これは以前よりも悪いです。 '['dist:clean'、 'dist'、 'dist:watch']'はあなたが 'dist:clean'と' dist' **を同時に実行していることを意味します。 'dist'の前に' dist:clean'を実行しません**。 [docs](https://github.com/gulpjs/gulp/blob/master/docs/API.md#deps)を読んでください。 –

関連する問題