我在项目中设置了以下gulp任务。一切顺利,直到我添加dist:images
任务。
现在,使用dist:watch
任务时每次运行都会导致错误
Error: EEXIST: file already exists, mkdir '/Users/toby/src/my-project/dist/imgs'
我可以看到干净的任务在其他任务开始之前完成。我还测试过没有其他任务正在创建该文件夹...那么dist:images
任务怎么创建这个目录然后抱怨它呢??!
这是代码......
/**
* 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']);
});
感谢您的提前帮助
答案 0 :(得分:-1)
解决方案与gulp和watch任务密切相关。
每次文件在每个任务中发生更改时都会删除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']);