我有一个包含大量文件和一个(或多个)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.
}
}
});
答案 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]));
}
}