如何通过覆盖现有的符号链接来强制创build符号链接?

我使用fs模块创build符号链接。

 fs.symlink("target", "path/to/symlink", function (e) { if (e) { ... } }); 

如果path/to/symlink已经存在,则在callback中发送一个错误。

我如何强制符号链接创build并重写现有的符号链接?

是否有另一种select比check error + delete existing symlink + try again

当使用ln命令行工具时,我们可以使用-f (强制)标志来完成

 ln -sf target symlink-name 

但是,除非我们在模块中实现这个function,否则这是不可能的。

我创build了lnf – 一个模块来覆盖现有的符号链接。

 // Dependencies var Lnf = require("lnf"); // Create the symlink Lnf.sync("foo", __dirname + "/baz"); // Override it Lnf("bar", __dirname + "/baz", function (err) { console.log(err || "Overriden the baz symlink."); }); 

阅读GitHub存储库的完整文档

您可以创build具有不同(唯一)名称的临时符号链接,然后重命名它。

使用fs.symlinkSync(path, tempName) ,然后使用fs.rename(tempName, name)

当其他应用程序依赖于它的存在(也可能意外地在访问它时被删除,但尚未被重新创build),这可能比删除文件好。