尝试覆盖Gulp中的现有文件时出现EEXIST错误?

am46iovg  于 2022-12-16  发布在  Gulp
关注(0)|答案(4)|浏览(264)

我想运行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应该能够轻松地覆盖现有文件,但我找不到一个简单的方法。

kmbjn2e3

kmbjn2e31#

gulp.dest()需要一个目录。您传递的是一个文件名
发生的事情是gulp试图创建目录app/index.html,但由于已经有一个同名文件,所以无法创建。
您所需要做的就是将app/作为目标目录:

gulp.task('bower', () => {
  return gulp.src('app/index.html')
    .pipe(wiredep())
    .pipe(gulp.dest('app/'));
})
6yjfywim

6yjfywim2#

您应该能够使用gulp.dest,它具有一个选项overwrite
options.overwrite类型:布尔
默认值:true
指定是否应覆盖具有相同路径的现有文件。

vbkedwbf

vbkedwbf3#

会没事的。

gulp.task('bower', () => {
  return gulp.src('app/index.html')
    .pipe(wiredep())
    .pipe(gulp.dest('app')) // Have wiredep operate on the source 
})
xfb7svmp

xfb7svmp4#

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}));
}

完整文档https://gulpjs.com/docs/en/api/dest

相关问题