【问题标题】:Gulp giving error on symlinks in gulp.src()Gulp 在 gulp.src() 中的符号链接上给出错误
【发布时间】:2016-05-24 16:19:30
【问题描述】:

我的图像文件夹中有一个符号链接,它指向另一个文件夹,其中包含由第三方库提供的外部图像(由 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 创建的。有什么想法吗?

【问题讨论】:

  • 您是否尝试过使用实际的文件/文件夹而不是符号链接?只是为了验证符号链接是否存在问题。 EISDIR 错误让我认为 gulp 正在尝试使用一个目录,因为它是 src 而不是该目录中的文件。
  • 当它是一个文件夹时可以正常工作。我已将此用作临时解决方案。
  • 我在使用 JSPM 本地链接时遇到了同样的问题...

标签: javascript osx-mavericks gulp gulp-imagemin


【解决方案1】:

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

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

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

我不知道是应该出错还是跳过它们。

【讨论】:

    【解决方案2】:

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

    var vfs = require('vinyl-fs');
    
    gulp.task('myTask', [], function() {
      vfs.src('static/img/**/*')
      .pipe(vfs.dest('dist/img'))
    )};
    

    【讨论】:

      【解决方案3】:

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

      gulp.src('static/img/**/*', { follow: true })
      

      【讨论】:

        猜你喜欢
        • 2019-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        相关资源
        最近更新 更多