7

我的图像文件夹中有一个符号链接,它指向另一个文件夹,其中包含由第三方库提供的外部图像(由 bower 管理 - 一定要喜欢 javascript)。作为构建过程的一部分,我按如下方式压缩所有图像:

gulp.task('images', function() {
return gulp.src('static/img/**/*')
    .pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))
    .pipe(gulp.dest('dist/img'))
});

当 gulp 到达 img 文件夹中的符号链接文件夹时,它返回

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: EISDIR, read

使用 gulp-debug 表明它在符号链接文件夹上犹豫不决。我在 Mac OSX 上,符号链接是使用 ln -s 创建的。有任何想法吗?

4

3 回答 3

7

gulp.src()使用node-glob,它不会抓取符号链接:

**如果“globstar”在路径部分中单独存在,则它匹配零个或多个目录以及搜索匹配项的子目录。它不会爬取符号链接的目录。

请注意,符号链接的目录不会作为 a 的一部分进行爬网**,尽管它们的内容可能与模式的后续部分匹配。这可以防止无限循环和重复等。

我不知道它是否应该出错或只是跳过它们。

于 2015-01-23T17:54:16.583 回答
4

指向symlink文件夹时我遇到了同样的问题。解决方案很简单,只使用了vinyl-fs包。

var vfs = require('vinyl-fs');

gulp.task('myTask', [], function() {
  vfs.src('static/img/**/*')
  .pipe(vfs.dest('dist/img'))
)};
于 2016-02-12T21:53:26.990 回答
2

你可以使用 'follow: true' 选项让 Gulp 跟随符号链接。例如:

gulp.src('static/img/**/*', { follow: true })
于 2016-05-24T08:19:30.633 回答