我在Gulpfile中有一些我想要运行的任务,要么让它们的输出替换或改变现有文件。例如,我想运行wiredep
并让代码替换index.html
内的块(与源文件相同),所以基本上我有以下内容:
gulp.task('bower', () => {
return gulp.src('app/index.html')
.pipe(wiredep())
.pipe(gulp.dest('app/index.html')) // Have wiredep operate on the source
})
但这会产生EEXIST
错误。
同样,我想运行stylus
命令,并将输出传递给已经存在的文件(因为它以前运行过)。
我是否有任何选择,但每次都要运行del
?似乎Gulp应该能够轻松覆盖现有文件,但我无法想出一个简单的方法。
答案 0 :(得分:25)
gulp.dest()
需要目录。您正在传递文件名。
gulp尝试创建目录app/index.html
会发生什么,因为它已经是一个具有该名称的文件。
您需要做的就是将app/
作为目标目录传递:
gulp.task('bower', () => {
return gulp.src('app/index.html')
.pipe(wiredep())
.pipe(gulp.dest('app/'));
})
答案 1 :(得分:2)
您应该可以使用gulp.dest
选项overwrite
options.overwrite
输入:Boolean默认值:true
指定是否应覆盖具有相同路径的现有文件。
答案 2 :(得分:1)
没关系。
gulp.task('bower', () => {
return gulp.src('app/index.html')
.pipe(wiredep())
.pipe(gulp.dest('app')) // Have wiredep operate on the source
})
答案 3 :(得分:0)
Gulp 有 overwrite
选项
gulp.task('bower', () => {
return gulp.src('input/*.js')
.pipe(gulp.dest('output/',{overwrite:true}))
})
另一个例子
const { src, dest } = require('gulp');
function copy() {
return src('input/*.js')
.pipe(dest('output/',{overwrite:true}));
}