mem-fs-editor:如何复制相对的符号链接?

时间:2015-12-09 14:39:51

标签: node.js yeoman yeoman-generator

我有一个包含大量文件和一个(或多个)symlinkname -> .符号链接的目录。我想将整个目录的内容复制到新位置。下面的代码复制一切就好了,虽然它会跳过符号链接。添加globOptions.follow = true只能使它无限循环,这是有道理的,因为它会尝试取消引用它。我怎样才能让它复制所有内容+符号链接而不试图跟随它们?

this.fs.copy(
  this.destinationPath() + '/**',
  this.destinationPath('build/html'),
  {
    globOptions: {
      follow: true // This will make the copy loop infinitely, which makes sense. 
    }
  }
});

1 个答案:

答案 0 :(得分:1)

通过排除对符号链接的支持,发现Yeoman正在避免糟糕的用户体验(参见Simon Boudrias的评论),我知道我必须解决这个问题。我做了以下解决方法,请注意,只有在您无法避免像我这样的符号链接时才应用此方法。

var fs = require('fs');

// Find out if there are symlinks
var files = fs.readdirSync(this.destinationPath());
for (var i = 0; i < files.length; i++) {

  var path = this.destinationPath(files[i]),
      stats = fs.lstatSync(path);

  if (stats.isSymbolicLink()) {

    // Find the target of the symlink and make an identical link into the new location
    var link = fs.readlinkSync(path);
    fs.symlinkSync(link, this.destinationPath('build/html/' + files[i]));
  }
}