我想通过修改现有路径的副本来创建一些新路径。 Node 路径对象看起来非常基本。我可以看到默认路径对象是如何实现的,但它看起来很笨重。
最巧妙的改变方式是什么
a/path/to/file.json
进入另外两条路径
a/path/to/file-original.json
a/path/to/file-comparand.json
路径可以是相对的或绝对的,所以我希望有一些东西可以让我改变 name无需担心root或dir对象。
是否有高级路径模块或其他我缺少的东西?
感谢您的帮助
最佳答案
假设没有一个库可以为您实现此功能,那么使用 path.parse
并不一定很笨拙 - 我实际上认为使用它可能是执行此操作的最干净的方法:
let { dir, name, ext } = path.parse("a/path/to/file.json");
let path1 = path.join(dir, name + "-original" + ext);
let path2 = path.join(dir, name + "-comarand" + ext);
该代码片段使用 destructuring ,因此您需要最新版本的 Node 才能运行它。也就是说,您可以将其替换为正常访问解析的路径对象:
let p = path.parse("a/path/to/file.json");
let path1 = path.join(p.dir, p.name + "-original" + p.ext);
let path2 = path.join(p.dir, p.name + "-comarand" + p.ext);
没那么糟糕!
如果这是您在项目中经常做的事情,那么将其提取到实用函数中并不难,如下所示:
function suffixFilename(path, suffix) {
let { dir, name, ext } = path.parse(path);
return path.join(dir, name + "-" + suffix + ext);
}
let path1 = suffixFilename("a/path/to/file.json", "original");
let path2 = suffixFilename("a/path/to/file.json", "comparand");
关于node.js - NodeJS 中的路径操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42435464/